aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-08-08 14:46:24 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2023-08-08 14:46:24 +0000
commitc9206e7881979b5d2e2a0265e6d483677cb0d7dd (patch)
tree92571f78ac018588d4d0af00e1e4bbd2039eeabe
parentb0e64927bc95abe3587262084dd57fbb3ef038e4 (diff)
Use vespalib hash_set since it is significantly faster and than std::unordered_set
-rw-r--r--storage/src/vespa/storage/distributor/maintenance/maintenancescanner.h2
-rw-r--r--storage/src/vespa/storage/distributor/maintenance/simplemaintenancescanner.h2
-rw-r--r--storage/src/vespa/storage/distributor/statechecker.cpp1
-rw-r--r--storage/src/vespa/storage/distributor/statechecker.h4
-rw-r--r--storage/src/vespa/storage/distributor/statecheckers.cpp5
-rw-r--r--vespalib/src/vespa/vespalib/stllike/hash_set.cpp2
6 files changed, 8 insertions, 8 deletions
diff --git a/storage/src/vespa/storage/distributor/maintenance/maintenancescanner.h b/storage/src/vespa/storage/distributor/maintenance/maintenancescanner.h
index 4fec2e57cbc..e4ccb6d88ad 100644
--- a/storage/src/vespa/storage/distributor/maintenance/maintenancescanner.h
+++ b/storage/src/vespa/storage/distributor/maintenance/maintenancescanner.h
@@ -32,8 +32,6 @@ public:
};
virtual ScanResult scanNext() = 0;
-
- virtual void reset() = 0;
};
}
diff --git a/storage/src/vespa/storage/distributor/maintenance/simplemaintenancescanner.h b/storage/src/vespa/storage/distributor/maintenance/simplemaintenancescanner.h
index a867d4a5267..cf6622f03b0 100644
--- a/storage/src/vespa/storage/distributor/maintenance/simplemaintenancescanner.h
+++ b/storage/src/vespa/storage/distributor/maintenance/simplemaintenancescanner.h
@@ -50,7 +50,7 @@ public:
~SimpleMaintenanceScanner();
ScanResult scanNext() override;
- void reset() override;
+ void reset();
// TODO: move out into own interface!
void prioritizeBucket(const document::Bucket &id);
diff --git a/storage/src/vespa/storage/distributor/statechecker.cpp b/storage/src/vespa/storage/distributor/statechecker.cpp
index eaff1f0b780..27a60b73716 100644
--- a/storage/src/vespa/storage/distributor/statechecker.cpp
+++ b/storage/src/vespa/storage/distributor/statechecker.cpp
@@ -4,6 +4,7 @@
#include "distributor_stripe_component.h"
#include <vespa/vdslib/distribution/distribution.h>
#include <vespa/vdslib/state/clusterstate.h>
+#include <vespa/vespalib/stllike/hash_set_insert.hpp>
#include <vespa/log/log.h>
LOG_SETUP(".distributor.statechecker");
diff --git a/storage/src/vespa/storage/distributor/statechecker.h b/storage/src/vespa/storage/distributor/statechecker.h
index 348d90bc712..830e05676be 100644
--- a/storage/src/vespa/storage/distributor/statechecker.h
+++ b/storage/src/vespa/storage/distributor/statechecker.h
@@ -6,7 +6,7 @@
#include <vespa/storage/distributor/operations/idealstate/idealstateoperation.h>
#include <vespa/storage/common/storagecomponent.h>
#include <vespa/storage/bucketdb/bucketdatabase.h>
-#include <unordered_set>
+#include <vespa/vespalib/stllike/hash_set.h>
#include <map>
#include <set>
@@ -74,7 +74,7 @@ public:
// well as have the ability to quickly check if a node is in an ideal
// location.
std::vector<uint16_t> idealState;
- std::unordered_set<uint16_t> unorderedIdealState;
+ vespalib::hash_set<uint16_t> unorderedIdealState;
const DistributorNodeContext& node_ctx;
const DistributorStripeOperationContext& op_ctx;
diff --git a/storage/src/vespa/storage/distributor/statecheckers.cpp b/storage/src/vespa/storage/distributor/statecheckers.cpp
index f9c26bf113e..fe1f4422c45 100644
--- a/storage/src/vespa/storage/distributor/statecheckers.cpp
+++ b/storage/src/vespa/storage/distributor/statecheckers.cpp
@@ -856,9 +856,8 @@ SynchronizeAndMoveStateChecker::check(Context& c) const
result += checkIfBucketsAreOutOfSyncAndNeedMerging(c);
if (result.shouldMerge()) {
- IdealStateOperation::UP op(
- new MergeOperation(BucketAndNodes(c.getBucket(), result.nodes()),
- c.distributorConfig.getMaxNodesPerMerge()));
+ auto op = std::make_unique<MergeOperation>(BucketAndNodes(c.getBucket(), result.nodes()),
+ c.distributorConfig.getMaxNodesPerMerge());
op->setDetailedReason(result.reason());
MaintenancePriority::Priority schedPri;
if ((c.getBucketSpace() == document::FixedBucketSpaces::default_space())
diff --git a/vespalib/src/vespa/vespalib/stllike/hash_set.cpp b/vespalib/src/vespa/vespalib/stllike/hash_set.cpp
index 8812af426bf..54614329a97 100644
--- a/vespalib/src/vespa/vespalib/stllike/hash_set.cpp
+++ b/vespalib/src/vespa/vespalib/stllike/hash_set.cpp
@@ -6,6 +6,8 @@
namespace vespalib {
}
+VESPALIB_HASH_SET_INSTANTIATE(int16_t);
+VESPALIB_HASH_SET_INSTANTIATE(uint16_t);
VESPALIB_HASH_SET_INSTANTIATE(int32_t);
VESPALIB_HASH_SET_INSTANTIATE(uint32_t);
VESPALIB_HASH_SET_INSTANTIATE(uint64_t);