syncbase/vsync: SyncGroup and DAG changes for SG syncing

* Change SyncGroup storage to support their versioning and being tracked
  in DAG and log records.
* Update the SyncGroup join & publish calls to support the asynchronous
  transition from known-but-pending SyncGroup to caught-up after sync.
* Add a SyncGroup local state info to track the number of local peer
  joiners, and the watchability, remote publishing, and sync pending
  states of the SyncGroup.
* Add the retry loop for the SyncGroup publishing to the remote peer.
* Improve error checking of SyncGroup prefixes passed in the Spec.
* Add a 1st-cut HasKey() store util API to bypass the VOM decode.  This
  will be later further optimized for leveldb to avoid a copy of the
  value from the C buffer to the Go buffer.
* Add DAG support to fully prune all nodes for an object including its
  current head node.
* Remove temporay solution of the responder adding the initiator to the
  SyncGroup joiner list.
* Improve unittest coverage.

Change-Id: I4585e248bd9e15b8b9585ec7b1830f8225686b2a
14 files changed
tree: fd98fb64be85341d1d4e5816982611e9802d1635
  1. cmd/
  2. examples/
  3. internal/
  4. lib/
  5. runtime/
  6. services/
  7. test/
  8. .gitignore
  9. AUTHORS
  10. CONTRIBUTING
  11. CONTRIBUTORS
  12. envvar.go
  13. envvar_test.go
  14. LICENSE
  15. PATENTS
  16. README.md
  17. VERSION
README.md

Vanadium

This repository contains a reference implementation of the Vanadium APIs.

Unlike the APIs in https://github.com/vanadium/go.v23, which promises to provide backward compatibility this repository makes no such promises.