Explorar o código

Merge pull request #8366 from heyitsanthony/prevkey-proxy

grpcproxy: forward PrevKv flag in Put
Anthony Romano %!s(int64=8) %!d(string=hai) anos
pai
achega
366f5381e0
Modificáronse 2 ficheiros con 7 adicións e 1 borrados
  1. 4 1
      integration/v3_grpc_test.go
  2. 3 0
      proxy/grpcproxy/kv.go

+ 4 - 1
integration/v3_grpc_test.go

@@ -44,7 +44,7 @@ func TestV3PutOverwrite(t *testing.T) {
 
 
 	kvc := toGRPC(clus.RandClient()).KV
 	kvc := toGRPC(clus.RandClient()).KV
 	key := []byte("foo")
 	key := []byte("foo")
-	reqput := &pb.PutRequest{Key: key, Value: []byte("bar")}
+	reqput := &pb.PutRequest{Key: key, Value: []byte("bar"), PrevKv: true}
 
 
 	respput, err := kvc.Put(context.TODO(), reqput)
 	respput, err := kvc.Put(context.TODO(), reqput)
 	if err != nil {
 	if err != nil {
@@ -61,6 +61,9 @@ func TestV3PutOverwrite(t *testing.T) {
 		t.Fatalf("expected newer revision on overwrite, got %v <= %v",
 		t.Fatalf("expected newer revision on overwrite, got %v <= %v",
 			respput2.Header.Revision, respput.Header.Revision)
 			respput2.Header.Revision, respput.Header.Revision)
 	}
 	}
+	if pkv := respput2.PrevKv; pkv == nil || string(pkv.Value) != "bar" {
+		t.Fatalf("expected PrevKv=bar, got response %+v", respput2)
+	}
 
 
 	reqrange := &pb.RangeRequest{Key: key}
 	reqrange := &pb.RangeRequest{Key: key}
 	resprange, err := kvc.Range(context.TODO(), reqrange)
 	resprange, err := kvc.Range(context.TODO(), reqrange)

+ 3 - 0
proxy/grpcproxy/kv.go

@@ -196,6 +196,9 @@ func PutRequestToOp(r *pb.PutRequest) clientv3.Op {
 	if r.IgnoreLease {
 	if r.IgnoreLease {
 		opts = append(opts, clientv3.WithIgnoreLease())
 		opts = append(opts, clientv3.WithIgnoreLease())
 	}
 	}
+	if r.PrevKv {
+		opts = append(opts, clientv3.WithPrevKV())
+	}
 	return clientv3.OpPut(string(r.Key), string(r.Value), opts...)
 	return clientv3.OpPut(string(r.Key), string(r.Value), opts...)
 }
 }