aboutsummaryrefslogtreecommitdiffstats
path: root/storage/src/tests/distributor
diff options
context:
space:
mode:
Diffstat (limited to 'storage/src/tests/distributor')
-rw-r--r--storage/src/tests/distributor/distributortest.cpp2
-rw-r--r--storage/src/tests/distributor/statecheckerstest.cpp35
2 files changed, 31 insertions, 6 deletions
diff --git a/storage/src/tests/distributor/distributortest.cpp b/storage/src/tests/distributor/distributortest.cpp
index 268a58a140e..235314dd38b 100644
--- a/storage/src/tests/distributor/distributortest.cpp
+++ b/storage/src/tests/distributor/distributortest.cpp
@@ -521,6 +521,7 @@ TEST_F(DistributorTest, priority_config_is_propagated_to_distributor_configurati
builder.prioritySplitLargeBucket = 9;
builder.prioritySplitInconsistentBucket = 10;
builder.priorityGarbageCollection = 11;
+ builder.priorityMergeGlobalBuckets = 12;
getConfig().configure(builder);
@@ -536,6 +537,7 @@ TEST_F(DistributorTest, priority_config_is_propagated_to_distributor_configurati
EXPECT_EQ(9, static_cast<int>(mp.splitLargeBucket));
EXPECT_EQ(10, static_cast<int>(mp.splitInconsistentBucket));
EXPECT_EQ(11, static_cast<int>(mp.garbageCollection));
+ EXPECT_EQ(12, static_cast<int>(mp.mergeGlobalBuckets));
}
TEST_F(DistributorTest, no_db_resurrection_for_bucket_not_owned_in_pending_state) {
diff --git a/storage/src/tests/distributor/statecheckerstest.cpp b/storage/src/tests/distributor/statecheckerstest.cpp
index fa7afd39cf3..ad95e14fe7c 100644
--- a/storage/src/tests/distributor/statecheckerstest.cpp
+++ b/storage/src/tests/distributor/statecheckerstest.cpp
@@ -2,6 +2,7 @@
#include "distributortestutil.h"
#include <vespa/config-stor-distribution.h>
+#include <vespa/document/bucket/fixed_bucket_spaces.h>
#include <vespa/document/test/make_bucket_space.h>
#include <vespa/document/test/make_document_bucket.h>
#include <vespa/storage/distributor/bucketdbupdater.h>
@@ -79,8 +80,8 @@ struct StateCheckersTest : Test, DistributorTestUtil {
.getSibling(c.getBucketId());
std::vector<BucketDatabase::Entry> entries;
- getBucketDatabase().getAll(c.getBucketId(), entries);
- c.siblingEntry = getBucketDatabase().get(c.siblingBucket);
+ getBucketDatabase(c.getBucketSpace()).getAll(c.getBucketId(), entries);
+ c.siblingEntry = getBucketDatabase(c.getBucketSpace()).get(c.siblingBucket);
c.entries = entries;
for (uint32_t j = 0; j < entries.size(); ++j) {
@@ -126,7 +127,7 @@ struct StateCheckersTest : Test, DistributorTestUtil {
ost << "NO OPERATIONS GENERATED";
}
- getBucketDatabase().clear();
+ getBucketDatabase(c.getBucketSpace()).clear();
return ost.str();
}
@@ -160,6 +161,7 @@ struct StateCheckersTest : Test, DistributorTestUtil {
std::string _clusterState {"distributor:1 storage:2"};
std::string _pending_cluster_state;
std::string _expect;
+ document::BucketSpace _bucket_space {document::FixedBucketSpaces::default_space()};
static const PendingMessage NO_OP_BLOCKER;
const PendingMessage* _blockerMessage {&NO_OP_BLOCKER};
uint32_t _redundancy {2};
@@ -208,6 +210,10 @@ struct StateCheckersTest : Test, DistributorTestUtil {
_merge_operations_disabled = disabled;
return *this;
}
+ CheckerParams& bucket_space(document::BucketSpace bucket_space) noexcept {
+ _bucket_space = bucket_space;
+ return *this;
+ }
};
template <typename CheckerImpl>
@@ -215,7 +221,8 @@ struct StateCheckersTest : Test, DistributorTestUtil {
CheckerImpl checker;
document::BucketId bid(17, 0);
- addNodesToBucketDB(bid, params._bucketInfo);
+ document::Bucket bucket(params._bucket_space, bid);
+ addNodesToBucketDB(bucket, params._bucketInfo);
setRedundancy(params._redundancy);
enableDistributorClusterState(params._clusterState);
getConfig().set_merge_operations_disabled(params._merge_operations_disabled);
@@ -225,8 +232,10 @@ struct StateCheckersTest : Test, DistributorTestUtil {
tick(); // Trigger command processing and pending state setup.
}
NodeMaintenanceStatsTracker statsTracker;
- StateChecker::Context c(
- getExternalOperationHandler(), getDistributorBucketSpace(), statsTracker, makeDocumentBucket(bid));
+ StateChecker::Context c(getExternalOperationHandler(),
+ getBucketSpaceRepo().get(params._bucket_space),
+ statsTracker,
+ bucket);
std::string result = testStateChecker(
checker, c, false, *params._blockerMessage,
params._includeMessagePriority,
@@ -757,6 +766,20 @@ TEST_F(StateCheckersTest, synchronize_and_move) {
.clusterState("distributor:1 storage:4"));
}
+TEST_F(StateCheckersTest, global_bucket_merges_have_high_priority) {
+ runAndVerify<SynchronizeAndMoveStateChecker>(
+ CheckerParams().expect(
+ "[Synchronizing buckets with different checksums "
+ "node(idx=0,crc=0x1,docs=1/1,bytes=1/1,trusted=false,active=false,ready=false), "
+ "node(idx=1,crc=0x2,docs=2/2,bytes=2/2,trusted=false,active=false,ready=false)] "
+ "(pri 115) "
+ "(scheduling pri HIGH)")
+ .bucketInfo("0=1,1=2")
+ .bucket_space(document::FixedBucketSpaces::global_space())
+ .includeSchedulingPriority(true)
+ .includeMessagePriority(true));
+}
+
// Upon entering a cluster state transition edge the distributor will
// prune all replicas from its DB that are on nodes that are unavailable
// in the _pending_ state. As long as this state is pending, the _current_