ref: Fix a couple of leaked context cancellations.
Change-Id: Icb81d80b85dcd0f46a6b97e560e31aaaa66f4d1c
diff --git a/lib/discovery/discovery.go b/lib/discovery/discovery.go
index 54b8c6e..e0cb578 100644
--- a/lib/discovery/discovery.go
+++ b/lib/discovery/discovery.go
@@ -80,7 +80,8 @@
func (d *idiscovery) removeTask(ctx *context.T) {
d.mu.Lock()
- if _, exist := d.tasks[ctx]; exist {
+ if cancel, exist := d.tasks[ctx]; exist {
+ cancel()
delete(d.tasks, ctx)
d.wg.Done()
}
diff --git a/runtime/internal/rpc/client.go b/runtime/internal/rpc/client.go
index 04e622c..3c5d528 100644
--- a/runtime/internal/rpc/client.go
+++ b/runtime/internal/rpc/client.go
@@ -200,6 +200,7 @@
connOpts := getConnectionOptions(ctx, opts)
r, err := c.connectToName(ctx, name, "", nil, connOpts, opts)
if err != nil {
+ cancel()
return nil, err
}
pinned := &pinnedConn{
diff --git a/runtime/internal/rpc/typecache.go b/runtime/internal/rpc/typecache.go
index 29de6b4..1911543 100644
--- a/runtime/internal/rpc/typecache.go
+++ b/runtime/internal/rpc/typecache.go
@@ -52,6 +52,8 @@
tce.enc = vom.NewTypeEncoder(f)
tce.dec = vom.NewTypeDecoder(f)
tce.dec.Start() // Stopped in collect()
+ } else {
+ c()
}
close(tce.ready)
}