Browse Source

Merge pull request #5787 from heyitsanthony/compact-resp

clientv3, ctl3, clientv3/integration: add compact response to compact
Xiang Li 9 years ago
parent
commit
ec232ec9d8

+ 1 - 1
clientv3/example_kv_test.go

@@ -210,7 +210,7 @@ func ExampleKV_compact() {
 	compRev := resp.Header.Revision // specify compact revision of your choice
 	compRev := resp.Header.Revision // specify compact revision of your choice
 
 
 	ctx, cancel = context.WithTimeout(context.Background(), requestTimeout)
 	ctx, cancel = context.WithTimeout(context.Background(), requestTimeout)
-	err = cli.Compact(ctx, compRev)
+	_, err = cli.Compact(ctx, compRev)
 	cancel()
 	cancel()
 	if err != nil {
 	if err != nil {
 		log.Fatal(err)
 		log.Fatal(err)

+ 6 - 6
clientv3/integration/kv_test.go

@@ -470,17 +470,17 @@ func TestKVCompactError(t *testing.T) {
 			t.Fatalf("couldn't put 'foo' (%v)", err)
 			t.Fatalf("couldn't put 'foo' (%v)", err)
 		}
 		}
 	}
 	}
-	err := kv.Compact(ctx, 6)
+	_, err := kv.Compact(ctx, 6)
 	if err != nil {
 	if err != nil {
 		t.Fatalf("couldn't compact 6 (%v)", err)
 		t.Fatalf("couldn't compact 6 (%v)", err)
 	}
 	}
 
 
-	err = kv.Compact(ctx, 6)
+	_, err = kv.Compact(ctx, 6)
 	if err != rpctypes.ErrCompacted {
 	if err != rpctypes.ErrCompacted {
 		t.Fatalf("expected %v, got %v", rpctypes.ErrCompacted, err)
 		t.Fatalf("expected %v, got %v", rpctypes.ErrCompacted, err)
 	}
 	}
 
 
-	err = kv.Compact(ctx, 100)
+	_, err = kv.Compact(ctx, 100)
 	if err != rpctypes.ErrFutureRev {
 	if err != rpctypes.ErrFutureRev {
 		t.Fatalf("expected %v, got %v", rpctypes.ErrFutureRev, err)
 		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 {
 	if err != nil {
 		t.Fatalf("couldn't compact kv space (%v)", err)
 		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 {
 	if err == nil || err != rpctypes.ErrCompacted {
 		t.Fatalf("error got %v, want %v", 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)
 		t.Fatalf("wchan got %v, expected closed", wr)
 	}
 	}
 
 
-	err = kv.Compact(ctx, 1000)
+	_, err = kv.Compact(ctx, 1000)
 	if err == nil || err != rpctypes.ErrFutureRev {
 	if err == nil || err != rpctypes.ErrFutureRev {
 		t.Fatalf("error got %v, want %v", err, rpctypes.ErrFutureRev)
 		t.Fatalf("error got %v, want %v", err, rpctypes.ErrFutureRev)
 	}
 	}

+ 2 - 2
clientv3/integration/watch_test.go

@@ -375,7 +375,7 @@ func TestWatchResumeCompacted(t *testing.T) {
 			t.Fatal(err)
 			t.Fatal(err)
 		}
 		}
 	}
 	}
-	if err := kv.Compact(context.TODO(), 3); err != nil {
+	if _, err := kv.Compact(context.TODO(), 3); err != nil {
 		t.Fatal(err)
 		t.Fatal(err)
 	}
 	}
 
 
@@ -414,7 +414,7 @@ func TestWatchCompactRevision(t *testing.T) {
 	w := clientv3.NewWatcher(clus.RandClient())
 	w := clientv3.NewWatcher(clus.RandClient())
 	defer w.Close()
 	defer w.Close()
 
 
-	if err := kv.Compact(context.TODO(), 4); err != nil {
+	if _, err := kv.Compact(context.TODO(), 4); err != nil {
 		t.Fatal(err)
 		t.Fatal(err)
 	}
 	}
 	wch := w.Watch(context.Background(), "foo", clientv3.WithRev(2))
 	wch := w.Watch(context.Background(), "foo", clientv3.WithRev(2))

+ 11 - 9
clientv3/kv.go

@@ -20,10 +20,11 @@ import (
 )
 )
 
 
 type (
 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 {
 type KV interface {
@@ -47,7 +48,7 @@ type KV interface {
 	Delete(ctx context.Context, key string, opts ...OpOption) (*DeleteResponse, error)
 	Delete(ctx context.Context, key string, opts ...OpOption) (*DeleteResponse, error)
 
 
 	// Compact compacts etcd KV history before the given rev.
 	// 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 applies a single Op on KV without a transaction.
 	// Do is useful when declaring operations to be issued at a later time
 	// 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)
 	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 {
 func (kv *kv) Txn(ctx context.Context) Txn {

+ 1 - 1
etcdctl/ctlv3/command/compaction_command.go

@@ -53,7 +53,7 @@ func compactionCommandFunc(cmd *cobra.Command, args []string) {
 
 
 	c := mustClientFromCmd(cmd)
 	c := mustClientFromCmd(cmd)
 	ctx, cancel := commandCtx(cmd)
 	ctx, cancel := commandCtx(cmd)
-	cerr := c.Compact(ctx, rev, opts...)
+	_, cerr := c.Compact(ctx, rev, opts...)
 	cancel()
 	cancel()
 	if cerr != nil {
 	if cerr != nil {
 		ExitWithError(ExitError, cerr)
 		ExitWithError(ExitError, cerr)