diff options
author | Tor Brede Vekterli <vekterli@verizonmedia.com> | 2020-03-12 16:09:08 +0000 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@verizonmedia.com> | 2020-03-16 15:14:03 +0000 |
commit | eb28962cb8edfdc3ad75fc9298a71bf31ab96af2 (patch) | |
tree | d5410917f69566acffbe494623b36d608ed6b0a5 /storage/build | |
parent | 7ec5934200cdffb5e17a083b6f56e9b4ae37246f (diff) |
Add initial metadata-only phase to inconsistent update handling
If bucket replicas are inconsistent, the common case is that only
a small subset of documents contained in the buckets are actually
mutually out of sync. The added metadata phase optimizes for
such a case by initially sending Get requests to all divergent
replicas that only ask for the timestamps (and no fields). This
is a very cheap and fast operation. If all returned timestamps
are in sync, the update can be restarted in the fast path.
Otherwise, a full Get will _only_ be sent to the newest replica,
and its result will be used for performing the update on the
distributor itself, before pushing out the result as Puts.
This is in contrast to today's behavior where full Gets are
sent to all replicas. For users with large documents this
can be very expensive.
In addition, the metadata Get operations are sent with weak
internal read consistency (as they do not need to read any
previously written, possibly in-flight fields). This lets them
bypass the main commit queue entirely.
Diffstat (limited to 'storage/build')
0 files changed, 0 insertions, 0 deletions