aboutsummaryrefslogtreecommitdiffstats
path: root/storageapi
diff options
context:
space:
mode:
authorGeir Storli <geirst@verizonmedia.com>2021-06-16 10:02:30 +0000
committerGeir Storli <geirst@verizonmedia.com>2021-06-16 10:02:30 +0000
commitc0b808b7321c519eb40a92788a9ca2c2203ffc57 (patch)
tree79dd13144bb60e03dac7f4c45398c8ea169e6ca8 /storageapi
parent01049d0b94e54d70ab72fe08e4520a36984c4422 (diff)
Dispatch RequestBucketInfoReply for non-existing buckets to correct distributor stripe.
Diffstat (limited to 'storageapi')
-rw-r--r--storageapi/src/vespa/storageapi/message/bucket.cpp9
-rw-r--r--storageapi/src/vespa/storageapi/message/bucket.h3
2 files changed, 11 insertions, 1 deletions
diff --git a/storageapi/src/vespa/storageapi/message/bucket.cpp b/storageapi/src/vespa/storageapi/message/bucket.cpp
index 2e2ca82079d..2323a1ab0a4 100644
--- a/storageapi/src/vespa/storageapi/message/bucket.cpp
+++ b/storageapi/src/vespa/storageapi/message/bucket.cpp
@@ -476,6 +476,12 @@ RequestBucketInfoCommand::getBucket() const
return document::Bucket(_bucketSpace, document::BucketId());
}
+document::BucketId
+RequestBucketInfoCommand::super_bucket_id() const
+{
+ return _buckets.empty() ? document::BucketId() : _buckets[0];
+}
+
void
RequestBucketInfoCommand::print(std::ostream& out, bool verbose,
const std::string& indent) const
@@ -510,7 +516,8 @@ std::ostream& operator<<(std::ostream& out, const RequestBucketInfoReply::Entry&
RequestBucketInfoReply::RequestBucketInfoReply(const RequestBucketInfoCommand& cmd)
: StorageReply(cmd),
_buckets(),
- _full_bucket_fetch(cmd.hasSystemState())
+ _full_bucket_fetch(cmd.hasSystemState()),
+ _super_bucket_id(cmd.super_bucket_id())
{ }
RequestBucketInfoReply::~RequestBucketInfoReply() = default;
diff --git a/storageapi/src/vespa/storageapi/message/bucket.h b/storageapi/src/vespa/storageapi/message/bucket.h
index 61766fb1f11..98445745753 100644
--- a/storageapi/src/vespa/storageapi/message/bucket.h
+++ b/storageapi/src/vespa/storageapi/message/bucket.h
@@ -358,6 +358,7 @@ public:
const vespalib::string& getDistributionHash() const { return _distributionHash; }
document::BucketSpace getBucketSpace() const { return _bucketSpace; }
document::Bucket getBucket() const override;
+ document::BucketId super_bucket_id() const;
void print(std::ostream& out, bool verbose, const std::string& indent) const override;
@@ -388,6 +389,7 @@ public:
private:
EntryVector _buckets;
bool _full_bucket_fetch;
+ document::BucketId _super_bucket_id;
public:
@@ -396,6 +398,7 @@ public:
const EntryVector & getBucketInfo() const { return _buckets; }
EntryVector & getBucketInfo() { return _buckets; }
[[nodiscard]] bool full_bucket_fetch() const noexcept { return _full_bucket_fetch; }
+ const document::BucketId& super_bucket_id() const { return _super_bucket_id; }
void print(std::ostream& out, bool verbose, const std::string& indent) const override;
DECLARE_STORAGEREPLY(RequestBucketInfoReply, onRequestBucketInfoReply)
};