Browse Source

Merge pull request #14577 from jtattermusch/csharp_remove_connectivity_watcher

Get rid of C# connectivity watcher task
Jan Tattermusch 7 years ago
parent
commit
b43741d10d
1 changed files with 1 additions and 34 deletions
  1. 1 34
      src/csharp/Grpc.Core/Channel.cs

+ 1 - 34
src/csharp/Grpc.Core/Channel.cs

@@ -44,8 +44,6 @@ namespace Grpc.Core
         readonly ChannelSafeHandle handle;
         readonly ChannelSafeHandle handle;
         readonly Dictionary<string, ChannelOption> options;
         readonly Dictionary<string, ChannelOption> options;
 
 
-        readonly Task connectivityWatcherTask;
-
         bool shutdownRequested;
         bool shutdownRequested;
 
 
         /// <summary>
         /// <summary>
@@ -86,9 +84,6 @@ namespace Grpc.Core
                     this.handle = ChannelSafeHandle.CreateInsecure(target, nativeChannelArgs);
                     this.handle = ChannelSafeHandle.CreateInsecure(target, nativeChannelArgs);
                 }
                 }
             }
             }
-            // TODO(jtattermusch): Workaround for https://github.com/GoogleCloudPlatform/google-cloud-dotnet/issues/822.
-            // Remove once retries are supported in C core
-            this.connectivityWatcherTask = RunConnectivityWatcherAsync();
             GrpcEnvironment.RegisterChannel(this);
             GrpcEnvironment.RegisterChannel(this);
         }
         }
 
 
@@ -259,7 +254,7 @@ namespace Grpc.Core
                 handle.Dispose();
                 handle.Dispose();
             }
             }
 
 
-            await Task.WhenAll(GrpcEnvironment.ReleaseAsync(), connectivityWatcherTask).ConfigureAwait(false);
+            await GrpcEnvironment.ReleaseAsync().ConfigureAwait(false);
         }
         }
 
 
         internal ChannelSafeHandle Handle
         internal ChannelSafeHandle Handle
@@ -317,34 +312,6 @@ namespace Grpc.Core
             }
             }
         }
         }
 
 
-        /// <summary>
-        /// Constantly Watches channel connectivity status to work around https://github.com/GoogleCloudPlatform/google-cloud-dotnet/issues/822
-        /// </summary>
-        private async Task RunConnectivityWatcherAsync()
-        {
-            try
-            {
-                var lastState = State;
-                while (lastState != ChannelState.Shutdown)
-                {
-                    lock (myLock)
-                    {
-                        if (shutdownRequested)
-                        {
-                            break;
-                        }
-                    }
-
-                    // ignore the result
-                    await WaitForStateChangedInternalAsync(lastState, DateTime.UtcNow.AddSeconds(1)).ConfigureAwait(false);
-                    lastState = State;
-                }
-            }
-            catch (ObjectDisposedException) {
-                // during shutdown, channel is going to be disposed.
-            }
-        }
-
         private static void EnsureUserAgentChannelOption(Dictionary<string, ChannelOption> options)
         private static void EnsureUserAgentChannelOption(Dictionary<string, ChannelOption> options)
         {
         {
             var key = ChannelOptions.PrimaryUserAgentString;
             var key = ChannelOptions.PrimaryUserAgentString;