summaryrefslogtreecommitdiffstats
path: root/storage/build
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@verizonmedia.com>2020-03-12 16:09:08 +0000
committerTor Brede Vekterli <vekterli@verizonmedia.com>2020-03-16 15:14:03 +0000
commiteb28962cb8edfdc3ad75fc9298a71bf31ab96af2 (patch)
treed5410917f69566acffbe494623b36d608ed6b0a5 /storage/build
parent7ec5934200cdffb5e17a083b6f56e9b4ae37246f (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