From 9dac159d3e8a35d25d0cc63a318ab5d9d00e6467 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=B7=E6=BA=AA?= Date: Fri, 24 Sep 2021 16:10:07 +0800 Subject: [PATCH] fix(config): watch etcd from last revision (#199) * chore: upgrade go kit to 0.12.0 * chore: upgrade go kit to 0.12.0 * fix: etcd context issue * fix: keep track of etcd revision --- config/remote/etcd/etcd.go | 5 +++-- config/remote/etcd/etcd_test.go | 2 -- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/config/remote/etcd/etcd.go b/config/remote/etcd/etcd.go index d0ed8aaf..5feae2db 100644 --- a/config/remote/etcd/etcd.go +++ b/config/remote/etcd/etcd.go @@ -17,6 +17,7 @@ import ( type ETCD struct { key string clientConfig clientv3.Config + rev int64 } // Provider create a *ETCD @@ -49,7 +50,7 @@ func (r *ETCD) ReadBytes() ([]byte, error) { if resp.Count == 0 { return nil, fmt.Errorf("no such config key: %s", r.key) } - + r.rev = resp.Header.Revision return resp.Kvs[0].Value, nil } @@ -69,7 +70,7 @@ func (r *ETCD) Watch(ctx context.Context, reload func() error) error { } defer client.Close() - rch := client.Watch(ctx, r.key) + rch := client.Watch(ctx, r.key, clientv3.WithRev(r.rev)) for { select { case resp := <-rch: diff --git a/config/remote/etcd/etcd_test.go b/config/remote/etcd/etcd_test.go index 323197eb..e2df1878 100644 --- a/config/remote/etcd/etcd_test.go +++ b/config/remote/etcd/etcd_test.go @@ -53,8 +53,6 @@ func TestRemote(t *testing.T) { return nil }) - time.Sleep(1 * time.Second) - if err := put(r, testVal); err != nil { t.Fatal(err) }