summaryrefslogtreecommitdiffstats
path: root/vdslib/src
diff options
context:
space:
mode:
Diffstat (limited to 'vdslib/src')
-rw-r--r--vdslib/src/vespa/vdslib/state/cluster_state_bundle.cpp33
-rw-r--r--vdslib/src/vespa/vdslib/state/cluster_state_bundle.h7
2 files changed, 37 insertions, 3 deletions
diff --git a/vdslib/src/vespa/vdslib/state/cluster_state_bundle.cpp b/vdslib/src/vespa/vdslib/state/cluster_state_bundle.cpp
index ed561d67f6d..ff633c02fad 100644
--- a/vdslib/src/vespa/vdslib/state/cluster_state_bundle.cpp
+++ b/vdslib/src/vespa/vdslib/state/cluster_state_bundle.cpp
@@ -4,18 +4,30 @@
#include "cluster_state_bundle.h"
#include "clusterstate.h"
#include <iostream>
+#include <sstream>
namespace storage::lib {
ClusterStateBundle::ClusterStateBundle(const ClusterState &baselineClusterState)
- : _baselineClusterState(std::make_shared<const ClusterState>(baselineClusterState))
+ : _baselineClusterState(std::make_shared<const ClusterState>(baselineClusterState)),
+ _deferredActivation(false)
{
}
ClusterStateBundle::ClusterStateBundle(const ClusterState& baselineClusterState,
BucketSpaceStateMapping derivedBucketSpaceStates)
: _baselineClusterState(std::make_shared<const ClusterState>(baselineClusterState)),
- _derivedBucketSpaceStates(std::move(derivedBucketSpaceStates))
+ _derivedBucketSpaceStates(std::move(derivedBucketSpaceStates)),
+ _deferredActivation(false)
+{
+}
+
+ClusterStateBundle::ClusterStateBundle(const ClusterState& baselineClusterState,
+ BucketSpaceStateMapping derivedBucketSpaceStates,
+ bool deferredActivation)
+ : _baselineClusterState(std::make_shared<const ClusterState>(baselineClusterState)),
+ _derivedBucketSpaceStates(std::move(derivedBucketSpaceStates)),
+ _deferredActivation(deferredActivation)
{
}
@@ -52,6 +64,9 @@ ClusterStateBundle::operator==(const ClusterStateBundle &rhs) const
if (_derivedBucketSpaceStates.size() != rhs._derivedBucketSpaceStates.size()) {
return false;
}
+ if (_deferredActivation != rhs._deferredActivation) {
+ return false;
+ }
// Can't do a regular operator== comparison since we must check equality
// of cluster state _values_, not their _pointers_.
for (auto& lhs_ds : _derivedBucketSpaceStates) {
@@ -64,6 +79,14 @@ ClusterStateBundle::operator==(const ClusterStateBundle &rhs) const
return true;
}
+std::string
+ClusterStateBundle::toString() const
+{
+ std::ostringstream os;
+ os << *this;
+ return os.str();
+}
+
std::ostream& operator<<(std::ostream& os, const ClusterStateBundle& bundle) {
os << "ClusterStateBundle('" << *bundle.getBaselineClusterState();
if (!bundle.getDerivedClusterStates().empty()) {
@@ -74,7 +97,11 @@ std::ostream& operator<<(std::ostream& os, const ClusterStateBundle& bundle) {
os << " '" << *ds.second;
}
}
- os << "')";
+ os << '\'';
+ if (bundle.deferredActivation()) {
+ os << " (deferred activation)";
+ }
+ os << ")";
return os;
}
diff --git a/vdslib/src/vespa/vdslib/state/cluster_state_bundle.h b/vdslib/src/vespa/vdslib/state/cluster_state_bundle.h
index a64416762b8..d0b052766ff 100644
--- a/vdslib/src/vespa/vdslib/state/cluster_state_bundle.h
+++ b/vdslib/src/vespa/vdslib/state/cluster_state_bundle.h
@@ -5,6 +5,7 @@
#include <vespa/document/bucket/bucketspace.h>
#include <unordered_map>
#include <iosfwd>
+#include <string>
namespace storage::lib {
@@ -24,10 +25,14 @@ public:
>;
std::shared_ptr<const ClusterState> _baselineClusterState;
BucketSpaceStateMapping _derivedBucketSpaceStates;
+ bool _deferredActivation;
public:
explicit ClusterStateBundle(const ClusterState &baselineClusterState);
ClusterStateBundle(const ClusterState& baselineClusterState,
BucketSpaceStateMapping derivedBucketSpaceStates);
+ ClusterStateBundle(const ClusterState& baselineClusterState,
+ BucketSpaceStateMapping derivedBucketSpaceStates,
+ bool deferredActivation);
~ClusterStateBundle();
const std::shared_ptr<const ClusterState> &getBaselineClusterState() const;
const std::shared_ptr<const ClusterState> &getDerivedClusterState(document::BucketSpace bucketSpace) const;
@@ -35,6 +40,8 @@ public:
return _derivedBucketSpaceStates;
}
uint32_t getVersion() const;
+ bool deferredActivation() const noexcept { return _deferredActivation; }
+ std::string toString() const;
bool operator==(const ClusterStateBundle &rhs) const;
bool operator!=(const ClusterStateBundle &rhs) const { return !operator==(rhs); }
};