static async Task TestMemLeakAsync() { var channel = new Channel("192.168.2.13", 2379, ChannelCredentials.Insecure); var leaseClient = new Lease.LeaseClient(channel); Console.WriteLine("Start"); Console.ReadLine(); for (int i = 0; i < 100; i++) { var leaseGrantReq = new LeaseGrantRequest() { TTL = 100, }; var leaseGrantRes = await leaseClient.LeaseGrantAsync(leaseGrantReq, cancellationToken : channel.ShutdownToken); using (var leaser = leaseClient.LeaseKeepAlive(cancellationToken: channel.ShutdownToken)) { var leaseKeepAliveReq = new LeaseKeepAliveRequest() { ID = leaseGrantRes.ID }; await leaser.RequestStream.WriteAsync(leaseKeepAliveReq); await leaser.RequestStream.CompleteAsync(); while (await leaser.ResponseStream.MoveNext(channel.ShutdownToken)) { var leaseKeepAliveRes = leaser.ResponseStream.Current; if (leaseKeepAliveRes.ID == leaseKeepAliveReq.ID) { break; } } } } Console.WriteLine("Done"); Console.ReadLine(); GC.Collect(); Console.WriteLine("GC"); Console.ReadLine(); await channel.ShutdownAsync(); }
private void Init() { try { if (_publicRootCa) { _channel = new Channel(_host, _port, new SslCredentials()); } else if (_clientSSL) { _channel = new Channel( _host, _port, new SslCredentials( _caCert, new KeyCertificatePair(_clientCert, _clientKey) ) ); } else if (_ssl) { _channel = new Channel(_host, _port, new SslCredentials(_caCert)); } else { _channel = new Channel(_host, _port, ChannelCredentials.Insecure); } if (_basicAuth) { Authenticate(); } _kvClient = new KV.KVClient(_channel); _watchClient = new Watch.WatchClient(_channel); _leaseClient = new Lease.LeaseClient(_channel); _lockClient = new Lock.LockClient(_channel); _clusterClient = new Cluster.ClusterClient(_channel); _maintenanceClient = new Maintenance.MaintenanceClient(_channel); } catch { throw; } _disposed = false; }