summaryrefslogtreecommitdiffstats
path: root/storage/src/tests/distributor/CMakeLists.txt
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@verizonmedia.com>2020-12-01 09:34:29 +0000
committerTor Brede Vekterli <vekterli@verizonmedia.com>2020-12-01 15:12:54 +0000
commitfb96b6e254ef367428374eb4f254c248666bcd11 (patch)
tree72f23afd99187cfb97c8d2089a5c3504f2b175ce /storage/src/tests/distributor/CMakeLists.txt
parent008477111ac92e2eec81596a5037a205bbea53ff (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.txt1
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