summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-03-03 11:48:21 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2017-03-08 21:38:37 +0000
commit1f5ec300402aeb0f20a8a011c669fcefdd72f847 (patch)
treeda58163192626f4d03edd54e43129843016e8899
parentbe9df8bfa22cf5a7164f4f3deba44cdbd2b8e7cf (diff)
deinline large destructors
-rw-r--r--eval/src/vespa/eval/eval/interpreted_function.cpp15
-rw-r--r--eval/src/vespa/eval/eval/interpreted_function.h5
-rw-r--r--metrics/src/vespa/metrics/printutils.cpp316
-rw-r--r--persistence/src/vespa/persistence/spi/result.cpp2
-rw-r--r--persistence/src/vespa/persistence/spi/result.h2
-rw-r--r--searchcore/src/apps/proton/proton.cpp3
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/data_directory_upgrader.cpp2
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/data_directory_upgrader.h1
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/disk_mem_usage_filter.h1
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_meta_store_read_guards.h1
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/fileconfigmanager.cpp16
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/maintenancedocumentsubdb.h3
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/proton.cpp1
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/proton.h1
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/rpc_hooks.cpp3
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp62
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.h41
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributeguard.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributeguard.h1
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.cpp24
-rw-r--r--storage/src/vespa/storage/distributor/operations/external/twophaseupdateoperation.h1
-rw-r--r--storage/src/vespa/storage/distributor/statecheckers.cpp4
-rw-r--r--storage/src/vespa/storage/storageserver/changedbucketownershiphandler.cpp17
-rw-r--r--storage/src/vespa/storage/storageserver/changedbucketownershiphandler.h25
-rw-r--r--storage/src/vespa/storage/visiting/visitorthread.cpp2
-rw-r--r--storage/src/vespa/storage/visiting/visitorthread.h1
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/indexenvironment.cpp2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/indexenvironment.h1
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/queryenvironment.cpp5
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/queryenvironment.h1
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp12
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/searchvisitor.h4
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> &params_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 &params_in) {
params = &params_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> &params_in) : params(params_in) {}
+ explicit SimpleParams(const std::vector<double> &params_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); }