Merge pull request #5787 from heyitsanthony/compact-resp

clientv3, ctl3, clientv3/integration: add compact response to compact
This commit is contained in:
Xiang Li 2016-06-28 12:27:42 -07:00 committed by GitHub
commit ec232ec9d8
5 changed files with 21 additions and 19 deletions

View File

@ -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)

View File

@ -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)
} }

View File

@ -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))

View File

@ -20,10 +20,11 @@ import (
) )
type ( type (
PutResponse pb.PutResponse CompactResponse pb.CompactionResponse
GetResponse pb.RangeResponse PutResponse pb.PutResponse
DeleteResponse pb.DeleteRangeResponse GetResponse pb.RangeResponse
TxnResponse pb.TxnResponse 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 { func (kv *kv) Compact(ctx context.Context, rev int64, opts ...CompactOption) (*CompactResponse, error) {
if _, err := kv.remote.Compact(ctx, OpCompact(rev, opts...).toRequest()); err != nil { resp, err := kv.remote.Compact(ctx, OpCompact(rev, opts...).toRequest())
return toErr(ctx, err) 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 {

View File

@ -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)