diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-01-25 19:45:04 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-01-25 19:45:04 +0000 |
commit | c54aa32e479760432ac2be0c0a39cb761dfcc8fa (patch) | |
tree | eecd50b53944e07ff7d617f5b82281e5f027f4de | |
parent | 22a774fbba3941458ce07b03f217f43f01e28a5b (diff) |
- Stop maintenance jobs prior to reconfiguring.
- Always create new LidSpaceCompactionHandlers.
-rw-r--r-- | searchcore/src/vespa/searchcore/proton/server/documentdb.cpp | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp b/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp index 18af8e15335..17843a5cd22 100644 --- a/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp @@ -216,10 +216,6 @@ DocumentDB::DocumentDB(const vespalib::string &baseDir, // Forward changes of cluster state to bucket handler _clusterStateHandler.addClusterStateChangedHandler(&_bucketHandler); - _lidSpaceCompactionHandlers.push_back(std::make_unique<LidSpaceCompactionHandler>(_maintenanceController.getReadySubDB(), _docTypeName.getName())); - _lidSpaceCompactionHandlers.push_back(std::make_unique<LidSpaceCompactionHandler>(_maintenanceController.getRemSubDB(), _docTypeName.getName())); - _lidSpaceCompactionHandlers.push_back(std::make_unique<LidSpaceCompactionHandler>(_maintenanceController.getNotReadySubDB(), _docTypeName.getName())); - _writeFilter.setConfig(loaded_config->getMaintenanceConfigSP()->getAttributeUsageFilterConfig()); } @@ -415,6 +411,7 @@ DocumentDB::applyConfig(DocumentDBConfig::SP configSnapshot, SerialNum serialNum LOG(error, "Applying config to closed document db"); return; } + _maintenanceController.killJobs(); ConfigComparisonResult cmpres; Schema::SP oldSchema; int64_t generation = configSnapshot->getGeneration(); @@ -482,9 +479,7 @@ DocumentDB::applyConfig(DocumentDBConfig::SP configSnapshot, SerialNum serialNum _state.clearDelayedConfig(); } setActiveConfig(configSnapshot, generation); - if (params.shouldMaintenanceControllerChange()) { - forwardMaintenanceConfig(); - } + forwardMaintenanceConfig(); _writeFilter.setConfig(configSnapshot->getMaintenanceConfigSP()->getAttributeUsageFilterConfig()); if (_subDBs.getReprocessingRunner().empty()) { _subDBs.pruneRemovedFields(serialNum); @@ -698,9 +693,7 @@ DocumentDB::getAllowPrune() const void DocumentDB::start() { - LOG(debug, - "DocumentDB(%s): Database starting.", - _docTypeName.toString().c_str()); + LOG(debug, "DocumentDB(%s): Database starting.", _docTypeName.toString().c_str()); internalInit(); } @@ -933,6 +926,10 @@ DocumentDB::injectMaintenanceJobs(const DocumentDBMaintenanceConfig &config, std { // Called by executor thread _maintenanceController.killJobs(); + _lidSpaceCompactionHandlers.clear(); + _lidSpaceCompactionHandlers.push_back(std::make_unique<LidSpaceCompactionHandler>(_maintenanceController.getReadySubDB(), _docTypeName.getName())); + _lidSpaceCompactionHandlers.push_back(std::make_unique<LidSpaceCompactionHandler>(_maintenanceController.getRemSubDB(), _docTypeName.getName())); + _lidSpaceCompactionHandlers.push_back(std::make_unique<LidSpaceCompactionHandler>(_maintenanceController.getNotReadySubDB(), _docTypeName.getName())); MaintenanceJobsInjector::injectJobs(_maintenanceController, config, _bucketExecutor, @@ -996,13 +993,11 @@ DocumentDB::forwardMaintenanceConfig() // Called by executor thread DocumentDBConfig::SP activeConfig = getActiveConfig(); assert(activeConfig); - DocumentDBMaintenanceConfig::SP - maintenanceConfig(activeConfig->getMaintenanceConfigSP()); + auto maintenanceConfig(activeConfig->getMaintenanceConfigSP()); const auto &attributes_config = activeConfig->getAttributesConfig(); auto attribute_config_inspector = std::make_unique<AttributeConfigInspector>(attributes_config); if (!_state.getClosed()) { - if (_maintenanceController.getStarted() && - !_maintenanceController.getStopping()) { + if (_maintenanceController.getStarted() && !_maintenanceController.getStopping()) { injectMaintenanceJobs(*maintenanceConfig, std::move(attribute_config_inspector)); } _maintenanceController.newConfig(maintenanceConfig); |