syncbase/vsync:
Bugfix to handle syncing deletions.
Added a test to cover this case.
Change-Id: Ia3600dd2ca0475650afc4c4d4dc1ed8ccd219825
diff --git a/services/syncbase/vsync/initiator.go b/services/syncbase/vsync/initiator.go
index e14dac6..18df27b 100644
--- a/services/syncbase/vsync/initiator.go
+++ b/services/syncbase/vsync/initiator.go
@@ -444,6 +444,7 @@
}
}
+ vlog.VI(4).Infof("sync: recvAndProcessDeltas: processing rec %v", rec)
if err := iSt.insertRecInLogDagAndDb(ctx, rec, batchId, v.Value.Value, tx); err != nil {
return err
}
diff --git a/services/syncbase/vsync/responder.go b/services/syncbase/vsync/responder.go
index c0f2c9f..2211da4 100644
--- a/services/syncbase/vsync/responder.go
+++ b/services/syncbase/vsync/responder.go
@@ -440,9 +440,13 @@
func makeWireLogRec(ctx *context.T, st store.Store, rec *localLogRec) (*interfaces.LogRec, error) {
// Get the object value at the required version.
key, version := rec.Metadata.ObjId, rec.Metadata.CurVers
- value, err := watchable.GetAtVersion(ctx, st, []byte(key), nil, []byte(version))
- if err != nil {
- return nil, err
+ var value []byte
+ if !rec.Metadata.Delete {
+ var err error
+ value, err = watchable.GetAtVersion(ctx, st, []byte(key), nil, []byte(version))
+ if err != nil {
+ return nil, err
+ }
}
wireRec := &interfaces.LogRec{Metadata: rec.Metadata, Value: value}