diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-03-03 11:48:21 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-03-08 21:38:37 +0000 |
commit | 1f5ec300402aeb0f20a8a011c669fcefdd72f847 (patch) | |
tree | da58163192626f4d03edd54e43129843016e8899 | |
parent | be9df8bfa22cf5a7164f4f3deba44cdbd2b8e7cf (diff) |
deinline large destructors
32 files changed, 337 insertions, 240 deletions
diff --git a/eval/src/vespa/eval/eval/interpreted_function.cpp b/eval/src/vespa/eval/eval/interpreted_function.cpp index 61edc4567b7..b308de6b3c0 100644 --- a/eval/src/vespa/eval/eval/interpreted_function.cpp +++ b/eval/src/vespa/eval/eval/interpreted_function.cpp @@ -4,15 +4,12 @@ #include "node_visitor.h" #include "node_traverser.h" #include "check_type.h" -#include <cmath> -#include <vespa/vespalib/util/approx.h> -#include "operation.h" -#include <set> #include "tensor_spec.h" -#include "simple_tensor_engine.h" #include <vespa/vespalib/util/classname.h> #include <vespa/eval/eval/llvm/compile_cache.h> #include <vespa/vespalib/util/benchmark_timer.h> +#include <set> + namespace vespalib { namespace eval { @@ -520,6 +517,12 @@ InterpretedFunction::LazyParams::~LazyParams() { } +InterpretedFunction::SimpleParams::SimpleParams(const std::vector<double> ¶ms_in) + : params(params_in) +{} + +InterpretedFunction::SimpleParams::~SimpleParams() { } + const Value & InterpretedFunction::SimpleParams::resolve(size_t idx, Stash &stash) const { @@ -544,6 +547,8 @@ InterpretedFunction::State::State(const TensorEngine &engine_in) { } +InterpretedFunction::State::~State() {} + void InterpretedFunction::State::init(const LazyParams ¶ms_in) { params = ¶ms_in; diff --git a/eval/src/vespa/eval/eval/interpreted_function.h b/eval/src/vespa/eval/eval/interpreted_function.h index d0e6de119af..540f8212256 100644 --- a/eval/src/vespa/eval/eval/interpreted_function.h +++ b/eval/src/vespa/eval/eval/interpreted_function.h @@ -3,9 +3,9 @@ #pragma once #include "function.h" -#include <vespa/vespalib/util/stash.h> #include "simple_tensor_engine.h" #include "node_types.h" +#include <vespa/vespalib/util/stash.h> namespace vespalib { namespace eval { @@ -39,7 +39,8 @@ public: **/ struct SimpleParams : LazyParams { std::vector<double> params; - explicit SimpleParams(const std::vector<double> ¶ms_in) : params(params_in) {} + explicit SimpleParams(const std::vector<double> ¶ms_in); + ~SimpleParams(); const Value &resolve(size_t idx, Stash &stash) const override; }; /** diff --git a/metrics/src/vespa/metrics/printutils.cpp b/metrics/src/vespa/metrics/printutils.cpp index c28b74885d6..74db31de1ad 100644 --- a/metrics/src/vespa/metrics/printutils.cpp +++ b/metrics/src/vespa/metrics/printutils.cpp @@ -9,135 +9,137 @@ typedef std::pair<int64_t, bool> LongValue; typedef std::pair<double, bool> DoubleValue; MetricSource::MetricSource(const MetricSnapshot& s, - const String& metricsPrefix, - std::map<String, Metric::SP>* metricsAccessed) - : _snapshot(s), - _metricsPrefix(metricsPrefix), - _metricsAccessedOwner(), - _metricsAccessed(metricsAccessed == 0 ? _metricsAccessedOwner - : *metricsAccessed) - { - } + const String& metricsPrefix, + std::map<String, Metric::SP>* metricsAccessed) + : _snapshot(s), + _metricsPrefix(metricsPrefix), + _metricsAccessedOwner(), + _metricsAccessed(metricsAccessed == 0 ? _metricsAccessedOwner + : *metricsAccessed) +{ +} - Metric::String - MetricSource::createAbsoluteMetricName(const String& name) const { - String prefix = _metricsPrefix; - String addition = name; - while (addition.find("../") == 0) { - String::size_type pos1 = prefix.rfind('.'); - if (pos1 == String::npos) - throw vespalib::IllegalArgumentException( - "Cannot go back anymore in path " + prefix, - VESPA_STRLOC); - prefix = prefix.substr(0, pos1); - addition = addition.substr(3); - } - return (prefix.empty() ? addition : prefix + "." + addition); +MetricSource::~MetricSource() {} + +Metric::String +MetricSource::createAbsoluteMetricName(const String& name) const { + String prefix = _metricsPrefix; + String addition = name; + while (addition.find("../") == 0) { + String::size_type pos1 = prefix.rfind('.'); + if (pos1 == String::npos) + throw vespalib::IllegalArgumentException( + "Cannot go back anymore in path " + prefix, + VESPA_STRLOC); + prefix = prefix.substr(0, pos1); + addition = addition.substr(3); } + return (prefix.empty() ? addition : prefix + "." + addition); +} - MetricSource::SourceMetricVisitor::SourceMetricVisitor(const String& path, bool prefixMatch) - : _stringPath(path), - _path(vespalib::StringTokenizer(path, ".").getTokens()), - _pathIndex(-1), - _resultMetric(), - _prefixMatch(prefixMatch), - _prefixMatches() - { - } +MetricSource::SourceMetricVisitor::SourceMetricVisitor(const String& path, bool prefixMatch) + : _stringPath(path), + _path(vespalib::StringTokenizer(path, ".").getTokens()), + _pathIndex(-1), + _resultMetric(), + _prefixMatch(prefixMatch), + _prefixMatches() +{ +} MetricSource::SourceMetricVisitor::~SourceMetricVisitor() { } - void - MetricSource::SourceMetricVisitor::checkForPrefixMatch(const Metric& metric) { - if (metric.getName().size() >= _path[_pathIndex].size()) { - if (metric.getName().find(_path[_pathIndex]) == 0) { - _prefixMatches.push_back(metric.getName()); - } - } - } - - bool - MetricSource::SourceMetricVisitor::visitMetricSet(const MetricSet& set, bool) { - if (_pathIndex == -1) { - _pathIndex = 0; - return true; - } - if (_prefixMatch - && static_cast<size_t>(_pathIndex + 1) == _path.size()) - { - for (const Metric * entry : set.getRegisteredMetrics()) { - checkForPrefixMatch(*entry); - } - return false; - } - if (set.getName() != _path[_pathIndex]) return false; - if (static_cast<size_t>(++_pathIndex) >= _path.size()) { - throw vespalib::IllegalArgumentException( - "Path " + _stringPath + " points to a metric set. " - "Only primitive metrics can be retrieved.", - VESPA_STRLOC); - } - return true; - } - bool - MetricSource::SourceMetricVisitor::visitMetric(const Metric& metric, bool) { - if (_prefixMatch) { - checkForPrefixMatch(metric); - } - if (_path[_pathIndex] != metric.getName()) { - return true; - } - if (_prefixMatch) { - throw vespalib::IllegalArgumentException( - "Cannot find existing entries with prefix " - + _stringPath + " since element " + metric.getName() - + " is not a metric set", VESPA_STRLOC); - } - if (static_cast<size_t>(_pathIndex + 1) < _path.size()) { - throw vespalib::IllegalArgumentException( - "Path " + _stringPath + " cannot exist since element " - + _path[_pathIndex] + " is not a metric set: " - + metric.toString(), - VESPA_STRLOC); - } - std::vector<Metric::LP> ownerList; - _resultMetric.reset(metric.clone(ownerList, Metric::INACTIVE, 0)); - if (!ownerList.empty()) { - throw vespalib::IllegalArgumentException( - "Metric " + metric.getName() + " added entries to " - "owners list when cloning. This should not happen " - "for primitive metrics.", VESPA_STRLOC); - } - return false; +void +MetricSource::SourceMetricVisitor::checkForPrefixMatch(const Metric& metric) { + if (metric.getName().size() >= _path[_pathIndex].size()) { + if (metric.getName().find(_path[_pathIndex]) == 0) { + _prefixMatches.push_back(metric.getName()); } + } +} - const Metric* - MetricSource::getMetric(const String& name) { - String path = createAbsoluteMetricName(name); - std::map<String, Metric::SP>::const_iterator it( - _metricsAccessed.find(path)); - if (it != _metricsAccessed.end()) { - return it->second.get(); - } - SourceMetricVisitor visitor(path, false); - _snapshot.getMetrics().visit(visitor); - if (visitor._resultMetric.get() == 0) { - throw vespalib::IllegalArgumentException( - "Metric " + path + " was not found.", VESPA_STRLOC); +bool +MetricSource::SourceMetricVisitor::visitMetricSet(const MetricSet& set, bool) { + if (_pathIndex == -1) { + _pathIndex = 0; + return true; + } + if (_prefixMatch + && static_cast<size_t>(_pathIndex + 1) == _path.size()) + { + for (const Metric * entry : set.getRegisteredMetrics()) { + checkForPrefixMatch(*entry); } - Metric::SP metric(visitor._resultMetric.release()); - _metricsAccessed[path] = metric; - return metric.get(); + return false; + } + if (set.getName() != _path[_pathIndex]) return false; + if (static_cast<size_t>(++_pathIndex) >= _path.size()) { + throw vespalib::IllegalArgumentException( + "Path " + _stringPath + " points to a metric set. " + "Only primitive metrics can be retrieved.", + VESPA_STRLOC); + } + return true; +} +bool +MetricSource::SourceMetricVisitor::visitMetric(const Metric& metric, bool) { + if (_prefixMatch) { + checkForPrefixMatch(metric); + } + if (_path[_pathIndex] != metric.getName()) { + return true; + } + if (_prefixMatch) { + throw vespalib::IllegalArgumentException( + "Cannot find existing entries with prefix " + + _stringPath + " since element " + metric.getName() + + " is not a metric set", VESPA_STRLOC); } + if (static_cast<size_t>(_pathIndex + 1) < _path.size()) { + throw vespalib::IllegalArgumentException( + "Path " + _stringPath + " cannot exist since element " + + _path[_pathIndex] + " is not a metric set: " + + metric.toString(), + VESPA_STRLOC); + } + std::vector<Metric::LP> ownerList; + _resultMetric.reset(metric.clone(ownerList, Metric::INACTIVE, 0)); + if (!ownerList.empty()) { + throw vespalib::IllegalArgumentException( + "Metric " + metric.getName() + " added entries to " + "owners list when cloning. This should not happen " + "for primitive metrics.", VESPA_STRLOC); + } + return false; +} - std::vector<Metric::String> - MetricSource::getPathsMatchingPrefix(const String& prefix) const - { - String path = createAbsoluteMetricName(prefix); - SourceMetricVisitor visitor(path, true); - _snapshot.getMetrics().visit(visitor); - return visitor._prefixMatches; +const Metric* +MetricSource::getMetric(const String& name) { + String path = createAbsoluteMetricName(name); + std::map<String, Metric::SP>::const_iterator it( + _metricsAccessed.find(path)); + if (it != _metricsAccessed.end()) { + return it->second.get(); + } + SourceMetricVisitor visitor(path, false); + _snapshot.getMetrics().visit(visitor); + if (visitor._resultMetric.get() == 0) { + throw vespalib::IllegalArgumentException( + "Metric " + path + " was not found.", VESPA_STRLOC); } + Metric::SP metric(visitor._resultMetric.release()); + _metricsAccessed[path] = metric; + return metric.get(); +} + +std::vector<Metric::String> +MetricSource::getPathsMatchingPrefix(const String& prefix) const +{ + String path = createAbsoluteMetricName(prefix); + SourceMetricVisitor visitor(path, true); + _snapshot.getMetrics().visit(visitor); + return visitor._prefixMatches; +} // Addition functions. Ensure that if floating point value is used, // result ends up as floating point too. @@ -222,53 +224,53 @@ std::string getValueString(DoubleValue value, const char* format) return std::string(&buffer[0]); } - HttpTable::HttpTable(const std::string& title_, const std::string& topLeftText_) - : title(title_), topLeftText(topLeftText_) - {} - HttpTable::~HttpTable() { } +HttpTable::HttpTable(const std::string& title_, const std::string& topLeftText_) + : title(title_), topLeftText(topLeftText_) +{} +HttpTable::~HttpTable() { } - HttpTable::Row& - HttpTable::operator[](uint32_t i) { - if (i >= cells.size()) cells.resize(i + 1); - return cells[i]; - } +HttpTable::Row& +HttpTable::operator[](uint32_t i) { + if (i >= cells.size()) cells.resize(i + 1); + return cells[i]; +} - void - HttpTable::fillInEmptyHoles() { - if (rowNames.size() < cells.size()) rowNames.resize(cells.size()); - if (rowNames.size() > cells.size()) cells.resize(rowNames.size()); - for (uint32_t i=0; i<cells.size(); ++i) { - if (colNames.size() < cells[i].cells.size()) - colNames.resize(cells[i].cells.size()); - if (colNames.size() > cells[i].cells.size()) - cells[i].cells.resize(colNames.size()); - } +void +HttpTable::fillInEmptyHoles() { + if (rowNames.size() < cells.size()) rowNames.resize(cells.size()); + if (rowNames.size() > cells.size()) cells.resize(rowNames.size()); + for (uint32_t i=0; i<cells.size(); ++i) { + if (colNames.size() < cells[i].cells.size()) + colNames.resize(cells[i].cells.size()); + if (colNames.size() > cells[i].cells.size()) + cells[i].cells.resize(colNames.size()); } +} - void - HttpTable::print(std::ostream& out) { - out << "<h3>" << title << "</h3>\n"; - out << "<table border=\"1\">\n"; - fillInEmptyHoles(); - for (uint32_t i=0; i<=rowNames.size(); ++i) { - if (i == 0) { - out << "<tr><th>" << topLeftText << "</th>"; - for (uint32_t j=0; j<colNames.size(); ++j) { - out << "<th>" << colNames[j] << "</th>"; - } - out << "</tr>\n"; - } else { - out << "<tr><td>" << rowNames[i - 1] << "</td>"; - for (uint32_t j=0; j<colNames.size(); ++j) { - out << "<td align=\"right\">" - << (cells[i - 1][j].set ? cells[i - 1][j].value : "-") - << "</td>"; - } - out << "</tr>\n"; +void +HttpTable::print(std::ostream& out) { + out << "<h3>" << title << "</h3>\n"; + out << "<table border=\"1\">\n"; + fillInEmptyHoles(); + for (uint32_t i=0; i<=rowNames.size(); ++i) { + if (i == 0) { + out << "<tr><th>" << topLeftText << "</th>"; + for (uint32_t j=0; j<colNames.size(); ++j) { + out << "<th>" << colNames[j] << "</th>"; + } + out << "</tr>\n"; + } else { + out << "<tr><td>" << rowNames[i - 1] << "</td>"; + for (uint32_t j=0; j<colNames.size(); ++j) { + out << "<td align=\"right\">" + << (cells[i - 1][j].set ? cells[i - 1][j].value : "-") + << "</td>"; } + out << "</tr>\n"; } - out << "</table>\n"; } + out << "</table>\n"; +} } // printutils } // metrics diff --git a/persistence/src/vespa/persistence/spi/result.cpp b/persistence/src/vespa/persistence/spi/result.cpp index 511a73134f0..86564d69630 100644 --- a/persistence/src/vespa/persistence/spi/result.cpp +++ b/persistence/src/vespa/persistence/spi/result.cpp @@ -8,6 +8,8 @@ namespace storage { namespace spi { +Result::~Result() { } + vespalib::string Result::toString() const { vespalib::asciistream os; diff --git a/persistence/src/vespa/persistence/spi/result.h b/persistence/src/vespa/persistence/spi/result.h index 3cda34f33e0..df2a2a55454 100644 --- a/persistence/src/vespa/persistence/spi/result.h +++ b/persistence/src/vespa/persistence/spi/result.h @@ -36,7 +36,7 @@ public: : _errorCode(error), _errorMessage(errorMessage) {} - virtual ~Result() { } + virtual ~Result(); bool operator==(const Result& o) const { return _errorCode == o._errorCode diff --git a/searchcore/src/apps/proton/proton.cpp b/searchcore/src/apps/proton/proton.cpp index d8ae874c652..cf22158071f 100644 --- a/searchcore/src/apps/proton/proton.cpp +++ b/searchcore/src/apps/proton/proton.cpp @@ -20,8 +20,11 @@ struct Params std::string identity; std::string serviceidentity; uint64_t subscribeTimeout; + ~Params(); }; +Params::~Params() {} + class App : public FastOS_Application { private: diff --git a/searchcore/src/vespa/searchcore/proton/server/data_directory_upgrader.cpp b/searchcore/src/vespa/searchcore/proton/server/data_directory_upgrader.cpp index 7efd3b0e0dc..d33845f2b0f 100644 --- a/searchcore/src/vespa/searchcore/proton/server/data_directory_upgrader.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/data_directory_upgrader.cpp @@ -101,6 +101,8 @@ DataDirectoryUpgrader::RowColDir::RowColDir(const vespalib::string &row_, { } +DataDirectoryUpgrader::RowColDir::~RowColDir() { } + DataDirectoryUpgrader::ScanResult::ScanResult() : _rowColDirs(), _destDirExisting(false) diff --git a/searchcore/src/vespa/searchcore/proton/server/data_directory_upgrader.h b/searchcore/src/vespa/searchcore/proton/server/data_directory_upgrader.h index f36cafdbdcf..ccb4bc45eb9 100644 --- a/searchcore/src/vespa/searchcore/proton/server/data_directory_upgrader.h +++ b/searchcore/src/vespa/searchcore/proton/server/data_directory_upgrader.h @@ -22,6 +22,7 @@ public: public: RowColDir(const vespalib::string &row_, const vespalib::string &col_); + ~RowColDir(); const vespalib::string &row() const { return _row; } const vespalib::string &col() const { return _col; } vespalib::string dir() const { return row() + "/" + col(); } diff --git a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_filter.h b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_filter.h index b10a28b6ff0..8d9906b236b 100644 --- a/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_filter.h +++ b/searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_filter.h @@ -60,6 +60,7 @@ private: public: DiskMemUsageFilter(uint64_t physicalMememory_in); + ~DiskMemUsageFilter(); void setMemoryStats(vespalib::ProcessMemoryStats memoryStats_in); void setDiskStats(space_info diskStats_in); void setConfig(Config config); diff --git a/searchcore/src/vespa/searchcore/proton/server/document_meta_store_read_guards.h b/searchcore/src/vespa/searchcore/proton/server/document_meta_store_read_guards.h index b2e845d221a..65b9400c8f8 100644 --- a/searchcore/src/vespa/searchcore/proton/server/document_meta_store_read_guards.h +++ b/searchcore/src/vespa/searchcore/proton/server/document_meta_store_read_guards.h @@ -22,6 +22,7 @@ struct DocumentMetaStoreReadGuards remdms(subDBs.getRemSubDB()->getDocumentMetaStoreContext().getReadGuard()) { } + ~DocumentMetaStoreReadGuards(); uint32_t numActiveDocs() const { return readydms->get().getNumActiveLids(); } diff --git a/searchcore/src/vespa/searchcore/proton/server/fileconfigmanager.cpp b/searchcore/src/vespa/searchcore/proton/server/fileconfigmanager.cpp index 31c1756f9d2..07d8ffabb62 100644 --- a/searchcore/src/vespa/searchcore/proton/server/fileconfigmanager.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/fileconfigmanager.cpp @@ -130,29 +130,29 @@ class ConfigFile std::vector<char> _content; public: - ConfigFile(void); + ConfigFile(); + ~ConfigFile(); ConfigFile(const vespalib::string &name, const vespalib::string &fullName); - nbostream & - serialize(nbostream &stream) const; + nbostream &serialize(nbostream &stream) const; - nbostream & - deserialize(nbostream &stream); + nbostream &deserialize(nbostream &stream); - void - save(const vespalib::string &snapDir) const; + void save(const vespalib::string &snapDir) const; }; -ConfigFile::ConfigFile(void) +ConfigFile::ConfigFile() : _name(), _modTime(0), _content() { } +ConfigFile::~ConfigFile() {} + ConfigFile::ConfigFile(const vespalib::string &name, const vespalib::string &fullName) diff --git a/searchcore/src/vespa/searchcore/proton/server/maintenancedocumentsubdb.h b/searchcore/src/vespa/searchcore/proton/server/maintenancedocumentsubdb.h index 9154299b6f5..1b805f5f0de 100644 --- a/searchcore/src/vespa/searchcore/proton/server/maintenancedocumentsubdb.h +++ b/searchcore/src/vespa/searchcore/proton/server/maintenancedocumentsubdb.h @@ -19,12 +19,13 @@ public: IDocumentRetriever::SP _retriever; uint32_t _subDbId; - MaintenanceDocumentSubDB(void) + MaintenanceDocumentSubDB() : _metaStore(), _retriever(), _subDbId(0u) { } + ~MaintenanceDocumentSubDB(); MaintenanceDocumentSubDB(const IDocumentMetaStore::SP & metaStore, const IDocumentRetriever::SP & retriever, diff --git a/searchcore/src/vespa/searchcore/proton/server/proton.cpp b/searchcore/src/vespa/searchcore/proton/server/proton.cpp index e494c0e0f1c..4305bc45698 100644 --- a/searchcore/src/vespa/searchcore/proton/server/proton.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/proton.cpp @@ -106,6 +106,7 @@ Proton::ProtonFileHeaderContext::ProtonFileHeaderContext(const Proton &proton_, assert(!_hostName.empty()); } +Proton::ProtonFileHeaderContext::~ProtonFileHeaderContext() { } void Proton::ProtonFileHeaderContext::addTags(vespalib::GenericHeader &header, diff --git a/searchcore/src/vespa/searchcore/proton/server/proton.h b/searchcore/src/vespa/searchcore/proton/server/proton.h index 1e4b823dad5..78ea0a2f873 100644 --- a/searchcore/src/vespa/searchcore/proton/server/proton.h +++ b/searchcore/src/vespa/searchcore/proton/server/proton.h @@ -86,6 +86,7 @@ private: public: ProtonFileHeaderContext(const Proton &proton_, const vespalib::string &creator); + ~ProtonFileHeaderContext(); virtual void addTags(vespalib::GenericHeader &header, diff --git a/searchcore/src/vespa/searchcore/proton/server/rpc_hooks.cpp b/searchcore/src/vespa/searchcore/proton/server/rpc_hooks.cpp index 2c375fce6d5..7761ec59913 100644 --- a/searchcore/src/vespa/searchcore/proton/server/rpc_hooks.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/rpc_hooks.cpp @@ -24,8 +24,11 @@ struct Pair { value(v) { } + ~Pair(); }; +Pair::~Pair() {} + } namespace proton { diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp index 586d7cfdf83..35ae864b7e1 100644 --- a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp @@ -57,6 +57,49 @@ IIndexWriter::SP nullIndexWriter; } + +StoreOnlyDocSubDB::Config::Config(const DocTypeName &docTypeName, + const vespalib::string &subName, + const vespalib::string &baseDir, + const search::GrowStrategy &attributeGrow, + size_t attributeGrowNumDocs, + uint32_t subDbId, + SubDbType subDbType) + : _docTypeName(docTypeName), + _subName(subName), + _baseDir(baseDir + "/" + subName), + _attributeGrow(attributeGrow), + _attributeGrowNumDocs(attributeGrowNumDocs), + _subDbId(subDbId), + _subDbType(subDbType) +{ } +StoreOnlyDocSubDB::Config::~Config() { } + +StoreOnlyDocSubDB::Context::Context(IDocumentSubDB::IOwner &owner, + search::transactionlog::SyncProxy &tlSyncer, + const IGetSerialNum &getSerialNum, + const search::common::FileHeaderContext &fileHeaderContext, + searchcorespi::index::IThreadingService &writeService, + vespalib::ThreadStackExecutorBase &summaryExecutor, + std::shared_ptr<BucketDBOwner> bucketDB, + bucketdb::IBucketDBHandlerInitializer & bucketDBHandlerInitializer, + LegacyDocumentDBMetrics &metrics, + std::mutex &configMutex, + const HwInfo &hwInfo) + : _owner(owner), + _tlSyncer(tlSyncer), + _getSerialNum(getSerialNum), + _fileHeaderContext(fileHeaderContext), + _writeService(writeService), + _summaryExecutor(summaryExecutor), + _bucketDB(bucketDB), + _bucketDBHandlerInitializer(bucketDBHandlerInitializer), + _metrics(metrics), + _configMutex(configMutex), + _hwInfo(hwInfo) +{ } +StoreOnlyDocSubDB::Context::~Context() { } + StoreOnlyDocSubDB::StoreOnlyDocSubDB(const Config &cfg, const Context &ctx) : DocSubDB(ctx._owner, ctx._tlSyncer), _docTypeName(cfg._docTypeName), @@ -470,6 +513,25 @@ StoreOnlyDocSubDB::getDocumentDBReference() return std::shared_ptr<IDocumentDBReference>(); } +StoreOnlySubDBFileHeaderContext:: +StoreOnlySubDBFileHeaderContext(StoreOnlyDocSubDB &owner, + const search::common::FileHeaderContext & parentFileHeaderContext, + const DocTypeName &docTypeName, + const vespalib::string &baseDir) + : search::common::FileHeaderContext(), + _owner(owner), + _parentFileHeaderContext(parentFileHeaderContext), + _docTypeName(docTypeName), + _subDB() +{ + size_t pos = baseDir.rfind('/'); + if (pos != vespalib::string::npos) + _subDB = baseDir.substr(pos + 1); + else + _subDB = baseDir; +} +StoreOnlySubDBFileHeaderContext::~StoreOnlySubDBFileHeaderContext() {} + void StoreOnlyDocSubDB::tearDownReferences(IDocumentDBReferenceResolver &resolver) { diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h index 3136edcb34f..82dfb6e8e1b 100644 --- a/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h +++ b/searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h @@ -71,19 +71,8 @@ public: StoreOnlySubDBFileHeaderContext(StoreOnlyDocSubDB &owner, const search::common::FileHeaderContext & parentFileHeaderContext, const DocTypeName &docTypeName, - const vespalib::string &baseDir) - : search::common::FileHeaderContext(), - _owner(owner), - _parentFileHeaderContext(parentFileHeaderContext), - _docTypeName(docTypeName), - _subDB() - { - size_t pos = baseDir.rfind('/'); - if (pos != vespalib::string::npos) - _subDB = baseDir.substr(pos + 1); - else - _subDB = baseDir; - } + const vespalib::string &baseDir); + ~StoreOnlySubDBFileHeaderContext(); void addTags(vespalib::GenericHeader &header, const vespalib::string &name) const override; }; @@ -113,15 +102,8 @@ public: const search::GrowStrategy &attributeGrow, size_t attributeGrowNumDocs, uint32_t subDbId, - SubDbType subDbType) - : _docTypeName(docTypeName), - _subName(subName), - _baseDir(baseDir + "/" + subName), - _attributeGrow(attributeGrow), - _attributeGrowNumDocs(attributeGrowNumDocs), - _subDbId(subDbId), - _subDbType(subDbType) - { } + SubDbType subDbType); + ~Config(); }; struct Context { @@ -148,19 +130,8 @@ public: bucketDBHandlerInitializer, LegacyDocumentDBMetrics &metrics, std::mutex &configMutex, - const HwInfo &hwInfo) - : _owner(owner), - _tlSyncer(tlSyncer), - _getSerialNum(getSerialNum), - _fileHeaderContext(fileHeaderContext), - _writeService(writeService), - _summaryExecutor(summaryExecutor), - _bucketDB(bucketDB), - _bucketDBHandlerInitializer(bucketDBHandlerInitializer), - _metrics(metrics), - _configMutex(configMutex), - _hwInfo(hwInfo) - { } + const HwInfo &hwInfo); + ~Context(); }; diff --git a/searchlib/src/vespa/searchlib/attribute/attributeguard.cpp b/searchlib/src/vespa/searchlib/attribute/attributeguard.cpp index 531efd66d83..3726a26733f 100644 --- a/searchlib/src/vespa/searchlib/attribute/attributeguard.cpp +++ b/searchlib/src/vespa/searchlib/attribute/attributeguard.cpp @@ -30,6 +30,8 @@ AttributeEnumGuard::AttributeEnumGuard(const AttributeGuard & attr) : takeLock(); } +AttributeEnumGuard::~AttributeEnumGuard() { } + void AttributeEnumGuard::takeLock() { if (valid()) { std::shared_lock<std::shared_timed_mutex> take(get()->getEnumLock(), diff --git a/searchlib/src/vespa/searchlib/attribute/attributeguard.h b/searchlib/src/vespa/searchlib/attribute/attributeguard.h index 74f8be78628..9e83ac65b28 100644 --- a/searchlib/src/vespa/searchlib/attribute/attributeguard.h +++ b/searchlib/src/vespa/searchlib/attribute/attributeguard.h @@ -33,6 +33,7 @@ public: AttributeEnumGuard & operator = (const AttributeEnumGuard &) = delete; explicit AttributeEnumGuard(const AttributeVectorSP & attribute); explicit AttributeEnumGuard(const AttributeGuard & attribute); + ~AttributeEnumGuard(); private: mutable std::shared_lock<std::shared_timed_mutex> _lock; void takeLock(); diff --git a/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.cpp b/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.cpp index af0e016a77c..d0a1e98f0c8 100644 --- a/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.cpp +++ b/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.cpp @@ -7,7 +7,6 @@ #include <vespa/document/fieldvalue/document.h> #include <vespa/document/select/parser.h> #include <vespa/storageapi/message/persistence.h> -#include <vespa/storage/distributor/distributormetricsset.h> #include <vespa/storageapi/message/batch.h> #include <vespa/vespalib/stllike/hash_map.hpp> @@ -38,6 +37,8 @@ TwoPhaseUpdateOperation::TwoPhaseUpdateOperation( _updateDocBucketId = idFactory.getBucketId(_updateCmd->getDocumentId()); } +TwoPhaseUpdateOperation::~TwoPhaseUpdateOperation() {} + namespace { struct IntermediateMessageSender : DistributorMessageSender { @@ -46,13 +47,10 @@ struct IntermediateMessageSender : DistributorMessageSender { DistributorMessageSender& forward; std::shared_ptr<api::StorageReply> _reply; - IntermediateMessageSender( - SentMessageMap& mm, - const std::shared_ptr<Operation>& cb, - DistributorMessageSender & fwd) - : msgMap(mm), callback(cb), forward(fwd) - { - } + IntermediateMessageSender(SentMessageMap& mm, + const std::shared_ptr<Operation>& cb, + DistributorMessageSender & fwd); + ~IntermediateMessageSender(); virtual void sendCommand(const std::shared_ptr<api::StorageCommand>& cmd) { msgMap.insert(cmd->getMsgId(), callback); @@ -76,6 +74,16 @@ struct IntermediateMessageSender : DistributorMessageSender { } }; +IntermediateMessageSender::IntermediateMessageSender(SentMessageMap& mm, + const std::shared_ptr<Operation>& cb, + DistributorMessageSender & fwd) + : msgMap(mm), + callback(cb), + forward(fwd) +{ +} +IntermediateMessageSender::~IntermediateMessageSender() { } + } const char* diff --git a/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.h b/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.h index 13d501592d8..361fcd03037 100644 --- a/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.h +++ b/storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.h @@ -50,6 +50,7 @@ public: TwoPhaseUpdateOperation(DistributorComponent& manager, const std::shared_ptr<api::UpdateCommand> & msg, DistributorMetricSet& metrics); + ~TwoPhaseUpdateOperation(); void onStart(DistributorMessageSender& sender); diff --git a/storage/src/vespa/storage/distributor/statecheckers.cpp b/storage/src/vespa/storage/distributor/statecheckers.cpp index dd247eb497e..096611e03e1 100644 --- a/storage/src/vespa/storage/distributor/statecheckers.cpp +++ b/storage/src/vespa/storage/distributor/statecheckers.cpp @@ -649,6 +649,8 @@ public: } } + ~MergeNodes(); + void operator+=(const MergeNodes& other) { _reason << other._reason.str(); _problemFlags |= other._problemFlags; @@ -714,6 +716,8 @@ private: uint8_t _priority; }; +MergeNodes::~MergeNodes() {} + bool presentInIdealState(const StateChecker::Context& c, uint16_t node) { diff --git a/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.cpp b/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.cpp index 8de4199f246..27261424894 100644 --- a/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.cpp +++ b/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.cpp @@ -87,6 +87,23 @@ allDistributorsDownInState(const lib::ClusterState& state) { } +ChangedBucketOwnershipHandler::Metrics::Metrics(metrics::MetricSet* owner) + : metrics::MetricSet("changedbucketownershiphandler", "", "", owner), + averageAbortProcessingTime("avg_abort_processing_time", "", "Average time spent aborting operations for changed buckets", this), + idealStateOpsAborted("ideal_state_ops_aborted", "", "Number of outdated ideal state operations aborted", this), + externalLoadOpsAborted("external_load_ops_aborted", "", "Number of outdated external load operations aborted", this) +{} +ChangedBucketOwnershipHandler::Metrics::~Metrics() { } + +ChangedBucketOwnershipHandler::OwnershipState::OwnershipState(const lib::Distribution::SP& distribution, + const lib::ClusterState::CSP& state) + : _distribution(distribution), + _state(state) +{ +} +ChangedBucketOwnershipHandler::OwnershipState::~OwnershipState() {} + + uint16_t ChangedBucketOwnershipHandler::OwnershipState::ownerOf( const document::BucketId& bucket) const diff --git a/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.h b/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.h index 1689419d436..4d94f78629b 100644 --- a/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.h +++ b/storage/src/vespa/storage/storageserver/changedbucketownershiphandler.h @@ -58,22 +58,8 @@ public: metrics::LongCountMetric idealStateOpsAborted; metrics::LongCountMetric externalLoadOpsAborted; - Metrics(metrics::MetricSet* owner = 0) - : metrics::MetricSet("changedbucketownershiphandler", - "", "", owner), - averageAbortProcessingTime( - "avg_abort_processing_time", "", - "Average time spent aborting operations for changed " - "buckets", this), - idealStateOpsAborted( - "ideal_state_ops_aborted", "", - "Number of outdated ideal state operations aborted", - this), - externalLoadOpsAborted( - "external_load_ops_aborted", "", - "Number of outdated external load operations aborted", - this) - {} + Metrics(metrics::MetricSet* owner = 0); + ~Metrics(); }; /** @@ -92,11 +78,8 @@ public: using CSP = std::shared_ptr<const OwnershipState>; OwnershipState(const lib::Distribution::SP& distribution, - const lib::ClusterState::CSP& state) - : _distribution(distribution), - _state(state) - { - } + const lib::ClusterState::CSP& state); + ~OwnershipState(); static const uint16_t FAILED_TO_RESOLVE = 0xffff; diff --git a/storage/src/vespa/storage/visiting/visitorthread.cpp b/storage/src/vespa/storage/visiting/visitorthread.cpp index 61cdfba1a11..48ff14d9dec 100644 --- a/storage/src/vespa/storage/visiting/visitorthread.cpp +++ b/storage/src/vespa/storage/visiting/visitorthread.cpp @@ -31,6 +31,8 @@ VisitorThread::Event::Event(Event&& other) { } +VisitorThread::Event::~Event() {} + VisitorThread::Event& VisitorThread::Event::operator= (Event&& other) { diff --git a/storage/src/vespa/storage/visiting/visitorthread.h b/storage/src/vespa/storage/visiting/visitorthread.h index 545ffc6421f..fdfef7b2073 100644 --- a/storage/src/vespa/storage/visiting/visitorthread.h +++ b/storage/src/vespa/storage/visiting/visitorthread.h @@ -61,6 +61,7 @@ class VisitorThread : public framework::Runnable, Event(api::VisitorId visitor, mbus::Reply::UP reply); Event(api::VisitorId visitor, const std::shared_ptr<api::StorageMessage>& msg); + ~Event(); bool empty() const noexcept { return (_type == NONE); diff --git a/streamingvisitors/src/vespa/searchvisitor/indexenvironment.cpp b/streamingvisitors/src/vespa/searchvisitor/indexenvironment.cpp index 5e598f0f82b..2d96eddf493 100644 --- a/streamingvisitors/src/vespa/searchvisitor/indexenvironment.cpp +++ b/streamingvisitors/src/vespa/searchvisitor/indexenvironment.cpp @@ -17,6 +17,8 @@ IndexEnvironment::IndexEnvironment(const ITableManager & tableManager) : { } +IndexEnvironment::~IndexEnvironment() {} + bool IndexEnvironment::addField(const vespalib::string & name, bool isAttribute) { diff --git a/streamingvisitors/src/vespa/searchvisitor/indexenvironment.h b/streamingvisitors/src/vespa/searchvisitor/indexenvironment.h index 61a0805e0c1..d45817d0097 100644 --- a/streamingvisitors/src/vespa/searchvisitor/indexenvironment.h +++ b/streamingvisitors/src/vespa/searchvisitor/indexenvironment.h @@ -32,6 +32,7 @@ private: public: IndexEnvironment(const search::fef::ITableManager & tableManager); + ~IndexEnvironment(); // inherit documentation virtual const search::fef::Properties & getProperties() const override { return _properties; } diff --git a/streamingvisitors/src/vespa/searchvisitor/queryenvironment.cpp b/streamingvisitors/src/vespa/searchvisitor/queryenvironment.cpp index a69dd525f96..2a841de4b34 100644 --- a/streamingvisitors/src/vespa/searchvisitor/queryenvironment.cpp +++ b/streamingvisitors/src/vespa/searchvisitor/queryenvironment.cpp @@ -14,7 +14,8 @@ namespace storage { namespace { -search::fef::Location parseLocation(const string & location_str) +search::fef::Location +parseLocation(const string & location_str) { search::fef::Location fefLocation; if (location_str.empty()) { @@ -57,5 +58,7 @@ QueryEnvironment::QueryEnvironment(const string & location_str, { } +QueryEnvironment::~QueryEnvironment() {} + } // namespace storage diff --git a/streamingvisitors/src/vespa/searchvisitor/queryenvironment.h b/streamingvisitors/src/vespa/searchvisitor/queryenvironment.h index 48d0ef7645a..05ddcba92d3 100644 --- a/streamingvisitors/src/vespa/searchvisitor/queryenvironment.h +++ b/streamingvisitors/src/vespa/searchvisitor/queryenvironment.h @@ -32,6 +32,7 @@ public: const IndexEnvironment & indexEnv, const search::fef::Properties & properties, const search::IAttributeManager * attrMgr = NULL); + ~QueryEnvironment(); // inherit documentation virtual const search::fef::Properties & getProperties() const { return _properties; } diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp index fa68c046aa6..e83ec55b93f 100644 --- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp +++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp @@ -105,7 +105,11 @@ SearchVisitor::SummaryGenerator::SummaryGenerator() : { } -vespalib::ConstBufferRef SearchVisitor::SummaryGenerator::fillSummary(AttributeVector::DocId lid, const HitsAggregationResult::SummaryClassType & summaryClass) +SearchVisitor::SummaryGenerator::~SummaryGenerator() { } + + +vespalib::ConstBufferRef +SearchVisitor::SummaryGenerator::fillSummary(AttributeVector::DocId lid, const HitsAggregationResult::SummaryClassType & summaryClass) { if (_docsumWriter != NULL) { _rawBuf.reset(); @@ -135,6 +139,8 @@ SearchVisitor::GroupingEntry::GroupingEntry(Grouping * grouping) : { } +SearchVisitor::GroupingEntry::~GroupingEntry() { } + void SearchVisitor::GroupingEntry::aggregate(const document::Document & doc, search::HitRank rank) { if (_count < _limit) { @@ -393,6 +399,8 @@ SearchVisitor::PositionInserter::PositionInserter(search::AttributeVector & attr { } +SearchVisitor::PositionInserter::~PositionInserter() {} + void SearchVisitor::PositionInserter::onPrimitive(const IteratorContent & c) { @@ -458,6 +466,8 @@ SearchVisitor::RankController::RankController() : { } +SearchVisitor::RankController::~RankController() {} + void SearchVisitor::RankController::setupRankProcessors(search::Query & query, const vespalib::string & location, diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h index 101fd91c5af..e8de5f85e5a 100644 --- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h +++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.h @@ -101,6 +101,7 @@ private: class PositionInserter : public AttributeInserter { public: PositionInserter(search::AttributeVector & attribute, search::AttributeVector::DocId docId); + ~PositionInserter(); private: virtual void onPrimitive(const IteratorContent & c); virtual void onStructStart(const Content & fv); @@ -133,6 +134,7 @@ private: public: RankController(); + ~RankController(); bool valid() const { return _rankProcessor.get() != NULL; } void setRankProfile(const vespalib::string &rankProfile) { _rankProfile = rankProfile; } const vespalib::string &getRankProfile() const { return _rankProfile; } @@ -368,6 +370,7 @@ private: class GroupingEntry : std::shared_ptr<Grouping> { public: GroupingEntry(Grouping * grouping); + ~GroupingEntry(); void aggregate(const document::Document & doc, search::HitRank rank); const Grouping & operator * () const { return *_grouping; } Grouping & operator * () { return *_grouping; } @@ -384,6 +387,7 @@ private: { public: SummaryGenerator(); + ~SummaryGenerator(); GetDocsumsState & getDocsumState() { return _docsumState; } vsm::GetDocsumsStateCallback & getDocsumCallback() { return _callback; } void setFilter(std::unique_ptr<vsm::DocsumFilter> filter) { _docsumFilter = std::move(filter); } |