From 8bbccf1047ddeede052d6ae267ed0ef055ba1631 Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Mon, 27 Jun 2016 20:51:12 -0700 Subject: [PATCH] clientv3, ctl3, clientv3/integration: add compact response to compact --- clientv3/example_kv_test.go | 2 +- clientv3/integration/kv_test.go | 12 ++++++------ clientv3/integration/watch_test.go | 4 ++-- clientv3/kv.go | 20 +++++++++++--------- etcdctl/ctlv3/command/compaction_command.go | 2 +- 5 files changed, 21 insertions(+), 19 deletions(-) diff --git a/clientv3/example_kv_test.go b/clientv3/example_kv_test.go index 8e307a1e8..340b07811 100644 --- a/clientv3/example_kv_test.go +++ b/clientv3/example_kv_test.go @@ -210,7 +210,7 @@ func ExampleKV_compact() { compRev := resp.Header.Revision // specify compact revision of your choice ctx, cancel = context.WithTimeout(context.Background(), requestTimeout) - err = cli.Compact(ctx, compRev) + _, err = cli.Compact(ctx, compRev) cancel() if err != nil { log.Fatal(err) diff --git a/clientv3/integration/kv_test.go b/clientv3/integration/kv_test.go index 4dbfd129f..32fc15146 100644 --- a/clientv3/integration/kv_test.go +++ b/clientv3/integration/kv_test.go @@ -470,17 +470,17 @@ func TestKVCompactError(t *testing.T) { t.Fatalf("couldn't put 'foo' (%v)", err) } } - err := kv.Compact(ctx, 6) + _, err := kv.Compact(ctx, 6) if err != nil { t.Fatalf("couldn't compact 6 (%v)", err) } - err = kv.Compact(ctx, 6) + _, err = kv.Compact(ctx, 6) if err != rpctypes.ErrCompacted { t.Fatalf("expected %v, got %v", rpctypes.ErrCompacted, err) } - err = kv.Compact(ctx, 100) + _, err = kv.Compact(ctx, 100) if err != rpctypes.ErrFutureRev { t.Fatalf("expected %v, got %v", rpctypes.ErrFutureRev, err) } @@ -501,11 +501,11 @@ func TestKVCompact(t *testing.T) { } } - err := kv.Compact(ctx, 7) + _, err := kv.Compact(ctx, 7) if err != nil { t.Fatalf("couldn't compact kv space (%v)", err) } - err = kv.Compact(ctx, 7) + _, err = kv.Compact(ctx, 7) if err == nil || err != rpctypes.ErrCompacted { t.Fatalf("error got %v, want %v", err, rpctypes.ErrCompacted) } @@ -525,7 +525,7 @@ func TestKVCompact(t *testing.T) { t.Fatalf("wchan got %v, expected closed", wr) } - err = kv.Compact(ctx, 1000) + _, err = kv.Compact(ctx, 1000) if err == nil || err != rpctypes.ErrFutureRev { t.Fatalf("error got %v, want %v", err, rpctypes.ErrFutureRev) } diff --git a/clientv3/integration/watch_test.go b/clientv3/integration/watch_test.go index ac60f43de..fa5b70f28 100644 --- a/clientv3/integration/watch_test.go +++ b/clientv3/integration/watch_test.go @@ -375,7 +375,7 @@ func TestWatchResumeCompacted(t *testing.T) { t.Fatal(err) } } - if err := kv.Compact(context.TODO(), 3); err != nil { + if _, err := kv.Compact(context.TODO(), 3); err != nil { t.Fatal(err) } @@ -414,7 +414,7 @@ func TestWatchCompactRevision(t *testing.T) { w := clientv3.NewWatcher(clus.RandClient()) defer w.Close() - if err := kv.Compact(context.TODO(), 4); err != nil { + if _, err := kv.Compact(context.TODO(), 4); err != nil { t.Fatal(err) } wch := w.Watch(context.Background(), "foo", clientv3.WithRev(2)) diff --git a/clientv3/kv.go b/clientv3/kv.go index 6ba836db8..25b6df451 100644 --- a/clientv3/kv.go +++ b/clientv3/kv.go @@ -20,10 +20,11 @@ import ( ) type ( - PutResponse pb.PutResponse - GetResponse pb.RangeResponse - DeleteResponse pb.DeleteRangeResponse - TxnResponse pb.TxnResponse + CompactResponse pb.CompactionResponse + PutResponse pb.PutResponse + GetResponse pb.RangeResponse + DeleteResponse pb.DeleteRangeResponse + TxnResponse pb.TxnResponse ) type KV interface { @@ -47,7 +48,7 @@ type KV interface { Delete(ctx context.Context, key string, opts ...OpOption) (*DeleteResponse, error) // Compact compacts etcd KV history before the given rev. - Compact(ctx context.Context, rev int64, opts ...CompactOption) error + Compact(ctx context.Context, rev int64, opts ...CompactOption) (*CompactResponse, error) // Do applies a single Op on KV without a transaction. // Do is useful when declaring operations to be issued at a later time @@ -98,11 +99,12 @@ func (kv *kv) Delete(ctx context.Context, key string, opts ...OpOption) (*Delete return r.del, toErr(ctx, err) } -func (kv *kv) Compact(ctx context.Context, rev int64, opts ...CompactOption) error { - if _, err := kv.remote.Compact(ctx, OpCompact(rev, opts...).toRequest()); err != nil { - return toErr(ctx, err) +func (kv *kv) Compact(ctx context.Context, rev int64, opts ...CompactOption) (*CompactResponse, error) { + resp, err := kv.remote.Compact(ctx, OpCompact(rev, opts...).toRequest()) + if err != nil { + return nil, toErr(ctx, err) } - return nil + return (*CompactResponse)(resp), err } func (kv *kv) Txn(ctx context.Context) Txn { diff --git a/etcdctl/ctlv3/command/compaction_command.go b/etcdctl/ctlv3/command/compaction_command.go index d1296aaf1..6e6c77296 100644 --- a/etcdctl/ctlv3/command/compaction_command.go +++ b/etcdctl/ctlv3/command/compaction_command.go @@ -53,7 +53,7 @@ func compactionCommandFunc(cmd *cobra.Command, args []string) { c := mustClientFromCmd(cmd) ctx, cancel := commandCtx(cmd) - cerr := c.Compact(ctx, rev, opts...) + _, cerr := c.Compact(ctx, rev, opts...) cancel() if cerr != nil { ExitWithError(ExitError, cerr)