diff options
author | Tor Brede Vekterli <vekterli@verizonmedia.com> | 2020-12-01 09:34:29 +0000 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@verizonmedia.com> | 2020-12-01 15:12:54 +0000 |
commit | fb96b6e254ef367428374eb4f254c248666bcd11 (patch) | |
tree | 72f23afd99187cfb97c8d2089a5c3504f2b175ce /storage/src/tests/distributor/CMakeLists.txt | |
parent | 008477111ac92e2eec81596a5037a205bbea53ff (diff) |
Initial support for backend reindexing visitor functionality
Introduces the concept of a read-for-write visitor operation which
blocks all mutating operations from starting for a bucket being
visited. This read-for-write mode is used if (and only if) the visitor
library being specified by the client is "reindexingvisitor".
Since read-for-write visitors cannot race with concurrent write
operations, starting such visitors are deferred until no further
mutations are pending.
Also adds a basic reindexingvisitor implementation to the content node
which sends all documents as Puts containing a special TaS token
that will let the operation through even if a bucket is locked. This
token is cleared by the distributor before it is passed on to the
content nodes.
Note: this feature is not yet production ready. For now the following
caveats apply:
* Mutating vs non-mutating pending ops to a bucket are not tracked
separately, so it’s possible to starve a reindexing visitor by
sending constant pending read load, as read load is not blocked by
the operation sequencer.
* Ideal state operations towards locked buckets are not blocked, so
it's possible for e.g. a split to be sent for a bucket that is being
visited.
Diffstat (limited to 'storage/src/tests/distributor/CMakeLists.txt')
-rw-r--r-- | storage/src/tests/distributor/CMakeLists.txt | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/storage/src/tests/distributor/CMakeLists.txt b/storage/src/tests/distributor/CMakeLists.txt index 96df1a842a4..810ffb550bf 100644 --- a/storage/src/tests/distributor/CMakeLists.txt +++ b/storage/src/tests/distributor/CMakeLists.txt @@ -32,6 +32,7 @@ vespa_add_executable(storage_distributor_gtest_runner_app TEST pendingmessagetrackertest.cpp persistence_metrics_set_test.cpp putoperationtest.cpp + read_for_write_visitor_operation_test.cpp removebucketoperationtest.cpp removelocationtest.cpp removeoperationtest.cpp |