syncbase: Send initial root update in Watch.

An empty update for the root entity is sent as the first update on the
watch stream.
* For watches from an empty resume marker, this update is propagated to
the client as part of the initial state batch. It is necessary because
the initial state batch may not contain other updates (if the watch
filter matches no collections) and the client needs to be notified of
this. It is intended to be filtered out by the high-level API when
the initial state batch is being separated out.
* For watches from 'now' or a specific resume marker, the initial update
is sent with initial_state_skipped for compliance with
v.io/v23/services/watch. It is filtered out by the client library
instead of propagating to the user.

Initial update was hooked up end-to-end in Go. Only row updates are
propagated in Java and Cgo for now.

Errors in watch code have also been scrubbed to prevent leaking info
to the client before the authorization step.

MultiPart: 4/4
Change-Id: Ice6b87cae732cc165a9b4b64a83ee19df6ed436a
2 files changed
tree: 7b6ffbd643616977c2c3b129c33e0133dcd6ae8e
  1. go/
  2. .gitignore
  3. AUTHORS
  4. CONTRIBUTING.md
  5. CONTRIBUTORS
  6. LICENSE
  7. PATENTS
  8. VERSION