summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-10-19 16:53:12 +0200
committerGitHub <noreply@github.com>2021-10-19 16:53:12 +0200
commite722ea4cb24548558a5a0b50ae483cce0bd3f31c (patch)
tree39f4faf721fc0f557fe10071a8262d0fbf9e22df
parentce4cece599f831d1bf0ed0754f8a7763a69a7f7e (diff)
parent27acd0a8d5d678e542c4dc94973cbd616d785128 (diff)
Merge pull request #19639 from vespa-engine/toregge/add-async-apply-bucket-diff-config-try2
Move async_apply_bucket_diff config to stor-filestor.def.
-rw-r--r--configdefinitions/src/vespa/stor-filestor.def4
-rw-r--r--storage/src/vespa/storage/config/stor-server.def4
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp1
-rw-r--r--storage/src/vespa/storage/persistence/mergehandler.cpp6
-rw-r--r--storage/src/vespa/storage/persistence/mergehandler.h4
-rw-r--r--storage/src/vespa/storage/persistence/persistencehandler.cpp3
6 files changed, 13 insertions, 9 deletions
diff --git a/configdefinitions/src/vespa/stor-filestor.def b/configdefinitions/src/vespa/stor-filestor.def
index 88028cef394..66700eff3e6 100644
--- a/configdefinitions/src/vespa/stor-filestor.def
+++ b/configdefinitions/src/vespa/stor-filestor.def
@@ -43,6 +43,10 @@ common_merge_chain_optimalization_minimum_size int default=64 restart
## Note that this will gradually be increased to reach stor-distributormanager:splitsize which is currently at 32M
bucket_merge_chunk_size int default=33554432 restart
+## If set, portions of apply bucket diff handling will be performed asynchronously
+## with persistence thread not waiting for local writes to complete.
+async_apply_bucket_diff bool default=false
+
## When merging, it is possible to send more metadata than needed in order to
## let local nodes in merge decide which entries fits best to add this time
## based on disk location. Toggle this option on to use it. Note that memory
diff --git a/storage/src/vespa/storage/config/stor-server.def b/storage/src/vespa/storage/config/stor-server.def
index db660fb70d0..6611c3cba91 100644
--- a/storage/src/vespa/storage/config/stor-server.def
+++ b/storage/src/vespa/storage/config/stor-server.def
@@ -53,10 +53,6 @@ resource_exhaustion_merge_back_pressure_duration_secs double default=30.0
## a busy-reply that would subsequently be unwound through the entire merge chain.
disable_queue_limits_for_chained_merges bool default=false
-## If set, portions of apply bucket diff handling will be performed asynchronously
-## with persistence thread not waiting for local writes to complete.
-async_apply_bucket_diff bool default=false
-
## Whether the deadlock detector should be enabled or not. If disabled, it will
## still run, but it will never actually abort the process it is running in.
enable_dead_lock_detector bool default=false restart
diff --git a/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp b/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp
index ddcab0f3659..2ffb827accf 100644
--- a/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp
+++ b/storage/src/vespa/storage/persistence/filestorage/filestormanager.cpp
@@ -10,7 +10,6 @@
#include <vespa/vdslib/state/clusterstate.h>
#include <vespa/storage/common/hostreporter/hostinfo.h>
#include <vespa/storage/common/messagebucket.h>
-#include <vespa/storage/config/config-stor-server.h>
#include <vespa/storage/persistence/bucketownershipnotifier.h>
#include <vespa/storage/persistence/persistencethread.h>
#include <vespa/storage/persistence/persistencehandler.h>
diff --git a/storage/src/vespa/storage/persistence/mergehandler.cpp b/storage/src/vespa/storage/persistence/mergehandler.cpp
index b7ff18f4518..963fddd9fb5 100644
--- a/storage/src/vespa/storage/persistence/mergehandler.cpp
+++ b/storage/src/vespa/storage/persistence/mergehandler.cpp
@@ -23,13 +23,15 @@ namespace storage {
MergeHandler::MergeHandler(PersistenceUtil& env, spi::PersistenceProvider& spi,
const ClusterContext& cluster_context, const framework::Clock & clock,
uint32_t maxChunkSize,
- uint32_t commonMergeChainOptimalizationMinimumSize)
+ uint32_t commonMergeChainOptimalizationMinimumSize,
+ bool async_apply_bucket_diff)
: _clock(clock),
_cluster_context(cluster_context),
_env(env),
_spi(spi),
_maxChunkSize(maxChunkSize),
- _commonMergeChainOptimalizationMinimumSize(commonMergeChainOptimalizationMinimumSize)
+ _commonMergeChainOptimalizationMinimumSize(commonMergeChainOptimalizationMinimumSize),
+ _async_apply_bucket_diff(async_apply_bucket_diff)
{
}
diff --git a/storage/src/vespa/storage/persistence/mergehandler.h b/storage/src/vespa/storage/persistence/mergehandler.h
index e3b5b0899f6..0ff8f3c0ef8 100644
--- a/storage/src/vespa/storage/persistence/mergehandler.h
+++ b/storage/src/vespa/storage/persistence/mergehandler.h
@@ -45,7 +45,8 @@ public:
MergeHandler(PersistenceUtil& env, spi::PersistenceProvider& spi,
const ClusterContext& cluster_context, const framework::Clock & clock,
uint32_t maxChunkSize = 4190208,
- uint32_t commonMergeChainOptimalizationMinimumSize = 64);
+ uint32_t commonMergeChainOptimalizationMinimumSize = 64,
+ bool async_apply_bucket_diff = false);
bool buildBucketInfoList(
const spi::Bucket& bucket,
@@ -77,6 +78,7 @@ private:
spi::PersistenceProvider &_spi;
const uint32_t _maxChunkSize;
const uint32_t _commonMergeChainOptimalizationMinimumSize;
+ const bool _async_apply_bucket_diff;
/** Returns a reply if merge is complete */
api::StorageReply::SP processBucketMerge(const spi::Bucket& bucket,
diff --git a/storage/src/vespa/storage/persistence/persistencehandler.cpp b/storage/src/vespa/storage/persistence/persistencehandler.cpp
index 2106d1385ae..1ef883fc810 100644
--- a/storage/src/vespa/storage/persistence/persistencehandler.cpp
+++ b/storage/src/vespa/storage/persistence/persistencehandler.cpp
@@ -19,7 +19,8 @@ PersistenceHandler::PersistenceHandler(vespalib::ISequencedTaskExecutor & sequen
_processAllHandler(_env, provider),
_mergeHandler(_env, provider, component.cluster_context(), _clock,
cfg.bucketMergeChunkSize,
- cfg.commonMergeChainOptimalizationMinimumSize),
+ cfg.commonMergeChainOptimalizationMinimumSize,
+ cfg.asyncApplyBucketDiff),
_asyncHandler(_env, provider, bucketOwnershipNotifier, sequencedExecutor, component.getBucketIdFactory()),
_splitJoinHandler(_env, provider, bucketOwnershipNotifier, cfg.enableMultibitSplitOptimalization),
_simpleHandler(_env, provider)