diff --git a/driver/etcddriver.go b/driver/etcddriver.go index 912db01..a5bd206 100644 --- a/driver/etcddriver.go +++ b/driver/etcddriver.go @@ -140,7 +140,6 @@ func (e *EtcdDriver) revoke(ctx context.Context) { } func (e *EtcdDriver) heartBeat(ctx context.Context) { -label: leaseCh, err := e.createLease(ctx, e.nodeID) if err != nil { e.logger.Errorf("keep alive error, %v", err) @@ -153,15 +152,10 @@ label: e.logger.Infof("driver stopped") return } - case resp, ok := <-leaseCh: + case resp := <-leaseCh: { // if lease timeout, goto top of // this function to keepalive - if !ok { - e.logger.Errorf("extend lease error, release") - goto label - } - e.logger.Infof("leaseID=%0x", resp.ID) } } diff --git a/e2e/etcddriver_test.go b/e2e/etcddriver_test.go index a40ad9c..7e8c8dc 100644 --- a/e2e/etcddriver_test.go +++ b/e2e/etcddriver_test.go @@ -35,7 +35,7 @@ func TestEtcdDriver_GetNodes(t *testing.T) { require.Nil(t, err) drvs = append(drvs, drv) } - <-time.After(5 * time.Second) + <-time.After(15 * time.Second) for _, v := range drvs { nodes, err := v.GetNodes(context.Background()) require.Nil(t, err) @@ -91,6 +91,18 @@ func TestEtcdDriver_Stop(t *testing.T) { nodes, err = drv2.GetNodes(context.Background()) require.Nil(t, err) require.Len(t, nodes, 2) + nodes, err = drv1.GetNodes(context.Background()) + require.Nil(t, err) + require.Len(t, nodes, 2) + + // wait for 7 time extends, and re-get the nodes. + <-time.After(35 * time.Second) + nodes, err = drv2.GetNodes(context.Background()) + require.Nil(t, err) + require.Len(t, nodes, 2) + nodes, err = drv1.GetNodes(context.Background()) + require.Nil(t, err) + require.Len(t, nodes, 2) drv2.Stop(context.Background()) drv1.Stop(context.Background())