aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-08-18 10:31:02 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2023-08-18 10:31:02 +0000
commit928d4b33f09baae4e0b2d1db491b4499d387809d (patch)
tree4d81251dcb228759d36e031c589c863ea24bea87
parentb8f821694760e8865878b2fd8ca46c75e36740c4 (diff)
Move vectors, not copy
-rw-r--r--storage/src/tests/distributor/bucketdbmetricupdatertest.cpp13
-rw-r--r--storage/src/vespa/storage/bucketdb/bucketdatabase.h33
-rw-r--r--storage/src/vespa/storage/distributor/maintenance/maintenancescanner.h14
-rw-r--r--storage/src/vespa/storage/distributor/maintenance/simplemaintenancescanner.cpp2
4 files changed, 36 insertions, 26 deletions
diff --git a/storage/src/tests/distributor/bucketdbmetricupdatertest.cpp b/storage/src/tests/distributor/bucketdbmetricupdatertest.cpp
index 4d04e3ca51a..57a7fb529be 100644
--- a/storage/src/tests/distributor/bucketdbmetricupdatertest.cpp
+++ b/storage/src/tests/distributor/bucketdbmetricupdatertest.cpp
@@ -202,7 +202,7 @@ TEST_F(BucketDBMetricUpdaterTest, buckets_with_varying_trustedness) {
{
BucketInfo info(makeInfo(100, 200));
info.resetTrusted();
- BucketDatabase::Entry e(document::BucketId(16, 3), info);
+ BucketDatabase::Entry e(document::BucketId(16, 3), std::move(info));
metricUpdater.visit(e, 2);
}
metricUpdater.completeRound(false);
@@ -233,7 +233,7 @@ TEST_F(BucketDBMetricUpdaterTest, pick_largest_copy_if_no_trusted) {
// No trusted copies, so must pick second copy.
BucketInfo info(makeInfo(100, 200));
info.resetTrusted();
- BucketDatabase::Entry e(document::BucketId(16, 2), info);
+ BucketDatabase::Entry e(document::BucketId(16, 2), std::move(info));
metricUpdater.visit(e, 2);
metricUpdater.completeRound(false);
metricUpdater.getLastCompleteStats().propagateMetrics(ims, dms);
@@ -270,7 +270,7 @@ BucketDBMetricUpdaterTest::visitBucketWith2Copies1Trusted(BucketDBMetricUpdater&
BucketInfo info;
addNode(info, 0, 100);
addNode(info, 1, 101); // Note different checksums => #trusted = 1
- BucketDatabase::Entry e(document::BucketId(16, 1), info);
+ BucketDatabase::Entry e(document::BucketId(16, 1), std::move(info));
metricUpdater.visit(e, 2);
}
@@ -281,18 +281,17 @@ BucketDBMetricUpdaterTest::visitBucketWith2CopiesBothTrusted(BucketDBMetricUpdat
BucketInfo info;
addNode(info, 0, 200);
addNode(info, 2, 200);
- BucketDatabase::Entry e(document::BucketId(16, 2), info);
+ BucketDatabase::Entry e(document::BucketId(16, 2), std::move(info));
metricUpdater.visit(e, 2);
}
// Single replica on node 2.
void
-BucketDBMetricUpdaterTest::visitBucketWith1Copy(
- BucketDBMetricUpdater& metricUpdater)
+BucketDBMetricUpdaterTest::visitBucketWith1Copy(BucketDBMetricUpdater& metricUpdater)
{
BucketInfo info;
addNode(info, 2, 100);
- BucketDatabase::Entry e(document::BucketId(16, 1), info);
+ BucketDatabase::Entry e(document::BucketId(16, 1), std::move(info));
metricUpdater.visit(e, 2);
}
diff --git a/storage/src/vespa/storage/bucketdb/bucketdatabase.h b/storage/src/vespa/storage/bucketdb/bucketdatabase.h
index 4e0b727036a..d3fdce8f0d8 100644
--- a/storage/src/vespa/storage/bucketdb/bucketdatabase.h
+++ b/storage/src/vespa/storage/bucketdb/bucketdatabase.h
@@ -22,26 +22,29 @@ public:
BucketInfoType _info;
public:
- EntryBase() : _bucketId(0) {} // Invalid entry
- EntryBase(const document::BucketId& bId, const BucketInfoType& bucketInfo)
- : _bucketId(bId), _info(bucketInfo) {}
- EntryBase(const document::BucketId& bId, BucketInfoType&& bucketInfo)
- : _bucketId(bId), _info(std::move(bucketInfo)) {}
- explicit EntryBase(const document::BucketId& bId) : _bucketId(bId) {}
-
- bool operator==(const EntryBase& other) const {
+ EntryBase() noexcept : _bucketId(0), _info() {} // Invalid entry
+ EntryBase(const document::BucketId& bId, BucketInfoType&& bucketInfo) noexcept
+ : _bucketId(bId),
+ _info(std::move(bucketInfo))
+ {}
+ explicit EntryBase(const document::BucketId& bId) noexcept : _bucketId(bId), _info() {}
+ EntryBase(EntryBase &&) noexcept = default;
+ EntryBase & operator=(EntryBase &&) noexcept = default;
+ EntryBase(const EntryBase &) = default;
+ EntryBase & operator=(const EntryBase &) = default;
+ bool operator==(const EntryBase& other) const noexcept {
return (_bucketId == other._bucketId && _info == other._info);
}
- bool valid() const { return (_bucketId.getRawId() != 0); }
+ bool valid() const noexcept { return (_bucketId.getRawId() != 0); }
std::string toString() const;
- const document::BucketId& getBucketId() const { return _bucketId; }
- const BucketInfoType& getBucketInfo() const { return _info; }
- BucketInfoType& getBucketInfo() { return _info; }
- BucketInfoType* operator->() { return &_info; }
- const BucketInfoType* operator->() const { return &_info; }
+ const document::BucketId& getBucketId() const noexcept { return _bucketId; }
+ const BucketInfoType& getBucketInfo() const noexcept { return _info; }
+ BucketInfoType& getBucketInfo() noexcept { return _info; }
+ BucketInfoType* operator->() noexcept { return &_info; }
+ const BucketInfoType* operator->() const noexcept { return &_info; }
- static EntryBase createInvalid() {
+ static EntryBase createInvalid() noexcept {
return EntryBase();
}
};
diff --git a/storage/src/vespa/storage/distributor/maintenance/maintenancescanner.h b/storage/src/vespa/storage/distributor/maintenance/maintenancescanner.h
index e4ccb6d88ad..b894ec9a1cd 100644
--- a/storage/src/vespa/storage/distributor/maintenance/maintenancescanner.h
+++ b/storage/src/vespa/storage/distributor/maintenance/maintenancescanner.h
@@ -23,12 +23,20 @@ public:
static ScanResult createDone() { return ScanResult(true); }
static ScanResult createNotDone(document::BucketSpace bucketSpace, BucketDatabase::Entry entry) {
- return ScanResult(bucketSpace, entry);
+ return ScanResult(bucketSpace, std::move(entry));
}
private:
- explicit ScanResult(bool done) : _done(done), _bucketSpace(document::BucketSpace::invalid()), _entry() {}
- ScanResult(document::BucketSpace bucketSpace, const BucketDatabase::Entry& e) : _done(false), _bucketSpace(bucketSpace), _entry(e) {}
+ explicit ScanResult(bool done) noexcept
+ : _done(done),
+ _bucketSpace(document::BucketSpace::invalid()),
+ _entry()
+ {}
+ ScanResult(document::BucketSpace bucketSpace, BucketDatabase::Entry e) noexcept
+ : _done(false),
+ _bucketSpace(bucketSpace),
+ _entry(std::move(e))
+ {}
};
virtual ScanResult scanNext() = 0;
diff --git a/storage/src/vespa/storage/distributor/maintenance/simplemaintenancescanner.cpp b/storage/src/vespa/storage/distributor/maintenance/simplemaintenancescanner.cpp
index 86399c1b620..ab27f2d2e43 100644
--- a/storage/src/vespa/storage/distributor/maintenance/simplemaintenancescanner.cpp
+++ b/storage/src/vespa/storage/distributor/maintenance/simplemaintenancescanner.cpp
@@ -73,7 +73,7 @@ SimpleMaintenanceScanner::scanNext()
countBucket(_bucketSpaceItr->first, entry.getBucketInfo());
prioritizeBucket(document::Bucket(_bucketSpaceItr->first, entry.getBucketId()));
_bucketCursor = entry.getBucketId();
- return ScanResult::createNotDone(_bucketSpaceItr->first, entry);
+ return ScanResult::createNotDone(_bucketSpaceItr->first, std::move(entry));
}
}