diff --git a/etcd/embed.go b/etcd/embed.go index 57492d3f5..a0ddb8029 100644 --- a/etcd/embed.go +++ b/etcd/embed.go @@ -739,6 +739,14 @@ func (e *Etcd) leaseKeepAlive(ttl int64) (clientv3.LeaseID, func(context.Context select { case <-ctx.Done(): log.Printf("leaseKeepAlive: %v\n", ctx.Err()) + + if cli, err := e.client(); err != nil { + log.Printf("leaseKeepAlive: creates a new client: %v\n", err) + } else { + if _, err := cli.Revoke(context.Background(), leaseResp.ID); err != nil { + log.Printf("leaseKeepAlive: revokes the lease (ID: %v): %v\n", leaseResp.ID, err) + } + } return case <-ticker.C: diff --git a/server/server.go b/server/server.go index 4f1bd96b9..476641dbc 100644 --- a/server/server.go +++ b/server/server.go @@ -563,11 +563,9 @@ func (m *Command) GossipTransport() *gossip.Transport { // Close shuts down the server. func (m *Command) Close() error { select { - case <-m.done: + case _, _ = <-m.done: return nil default: - - defer close(m.done) eg := errgroup.Group{} m.grpcServer.Stop() eg.Go(m.Handler.Close) @@ -590,6 +588,8 @@ func (m *Command) Close() error { err := eg.Wait() _ = testhook.Closed(pilosa.NewAuditor(), m, nil) + close(m.done) + return errors.Wrap(err, "closing everything") } }