aboutsummaryrefslogtreecommitdiffstats
path: root/storageserver
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@verizonmedia.com>2019-09-24 11:03:07 +0000
committerTor Brede Vekterli <vekterli@verizonmedia.com>2019-09-24 11:05:12 +0000
commite3106b45327d54f5a24564618f9541b0da5210db (patch)
treec5c4cadcab976befc63dd47f53ef816e0a058072 /storageserver
parent11ab4237312e3f52fac8f5f82553ee2598ac5eed (diff)
Add config option for using B-tree bucket DB in distributor
Still disabled by default; this will be swapped later. Expose read guard generation for easier debugging. Add some explicit tests for read guard snapshot semantics.
Diffstat (limited to 'storageserver')
-rw-r--r--storageserver/src/vespa/storageserver/app/distributorprocess.cpp26
-rw-r--r--storageserver/src/vespa/storageserver/app/distributorprocess.h3
2 files changed, 17 insertions, 12 deletions
diff --git a/storageserver/src/vespa/storageserver/app/distributorprocess.cpp b/storageserver/src/vespa/storageserver/app/distributorprocess.cpp
index 57fdcdeb248..ff4b2e98cca 100644
--- a/storageserver/src/vespa/storageserver/app/distributorprocess.cpp
+++ b/storageserver/src/vespa/storageserver/app/distributorprocess.cpp
@@ -11,7 +11,8 @@ namespace storage {
DistributorProcess::DistributorProcess(const config::ConfigUri & configUri)
: Process(configUri),
- _activeFlag(DistributorNode::NO_NEED_FOR_ACTIVE_STATES)
+ _activeFlag(DistributorNode::NO_NEED_FOR_ACTIVE_STATES),
+ _use_btree_database(false)
{
}
@@ -29,19 +30,22 @@ DistributorProcess::shutdown()
void
DistributorProcess::setupConfig(uint64_t subscribeTimeout)
{
- std::unique_ptr<vespa::config::content::core::StorServerConfig> config =
- config::ConfigGetter<vespa::config::content::core::StorServerConfig>::getConfig(_configUri.getConfigId(), _configUri.getContext(), subscribeTimeout);
- if (config->persistenceProvider.type
- != vespa::config::content::core::StorServerConfig::PersistenceProvider::Type::STORAGE)
- {
+ using vespa::config::content::core::StorServerConfig;
+ using vespa::config::content::core::StorDistributormanagerConfig;
+ using vespa::config::content::core::StorVisitordispatcherConfig;
+
+ auto stor_config = config::ConfigGetter<StorServerConfig>::getConfig(
+ _configUri.getConfigId(), _configUri.getContext(), subscribeTimeout);
+ if (stor_config->persistenceProvider.type != StorServerConfig::PersistenceProvider::Type::STORAGE) {
_activeFlag = DistributorNode::NEED_ACTIVE_BUCKET_STATES_SET;
}
+ auto dist_config = config::ConfigGetter<StorDistributormanagerConfig>::getConfig(
+ _configUri.getConfigId(), _configUri.getContext(), subscribeTimeout);
+ _use_btree_database = dist_config->useBtreeDatabase;
_distributorConfigHandler
- = _configSubscriber.subscribe<vespa::config::content::core::StorDistributormanagerConfig>(
- _configUri.getConfigId(), subscribeTimeout);
+ = _configSubscriber.subscribe<StorDistributormanagerConfig>(_configUri.getConfigId(), subscribeTimeout);
_visitDispatcherConfigHandler
- = _configSubscriber.subscribe<vespa::config::content::core::StorVisitordispatcherConfig>(
- _configUri.getConfigId(), subscribeTimeout);
+ = _configSubscriber.subscribe<StorVisitordispatcherConfig>(_configUri.getConfigId(), subscribeTimeout);
Process::setupConfig(subscribeTimeout);
}
@@ -75,7 +79,7 @@ DistributorProcess::configUpdated()
void
DistributorProcess::createNode()
{
- _node.reset(new DistributorNode(_configUri, _context, *this, _activeFlag, StorageLink::UP()));
+ _node.reset(new DistributorNode(_configUri, _context, *this, _activeFlag, _use_btree_database, StorageLink::UP()));
_node->handleConfigChange(*_distributorConfigHandler->getConfig());
_node->handleConfigChange(*_visitDispatcherConfigHandler->getConfig());
}
diff --git a/storageserver/src/vespa/storageserver/app/distributorprocess.h b/storageserver/src/vespa/storageserver/app/distributorprocess.h
index 0e8d0e2d599..57193f77e42 100644
--- a/storageserver/src/vespa/storageserver/app/distributorprocess.h
+++ b/storageserver/src/vespa/storageserver/app/distributorprocess.h
@@ -15,6 +15,7 @@ namespace storage {
class DistributorProcess : public Process {
DistributorNodeContext _context;
DistributorNode::NeedActiveState _activeFlag;
+ bool _use_btree_database;
DistributorNode::UP _node;
config::ConfigHandle<vespa::config::content::core::StorDistributormanagerConfig>::UP
_distributorConfigHandler;
@@ -23,7 +24,7 @@ class DistributorProcess : public Process {
public:
DistributorProcess(const config::ConfigUri & configUri);
- ~DistributorProcess();
+ ~DistributorProcess() override;
void shutdown() override;
void setupConfig(uint64_t subscribeTimeout) override;