aboutsummaryrefslogtreecommitdiffstats
path: root/vdslib
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@verizonmedia.com>2019-03-13 16:00:04 +0000
committerTor Brede Vekterli <vekterli@verizonmedia.com>2019-03-14 14:44:29 +0000
commitc5d95cd19e86f2d3c337122226efd946f47d752e (patch)
treef6d5ab49215e41d67a8208248c58267f32617d25 /vdslib
parent4a18ca637cff723bcc45acc425689a69bcf4db66 (diff)
Basic handling of activate_cluster_state_version RPC in backend
Diffstat (limited to 'vdslib')
-rw-r--r--vdslib/src/vespa/vdslib/state/cluster_state_bundle.cpp24
-rw-r--r--vdslib/src/vespa/vdslib/state/cluster_state_bundle.h5
2 files changed, 26 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..68a279f04f8 100644
--- a/vdslib/src/vespa/vdslib/state/cluster_state_bundle.cpp
+++ b/vdslib/src/vespa/vdslib/state/cluster_state_bundle.cpp
@@ -8,14 +8,25 @@
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 +63,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) {
@@ -74,7 +88,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..a9e84225c1f 100644
--- a/vdslib/src/vespa/vdslib/state/cluster_state_bundle.h
+++ b/vdslib/src/vespa/vdslib/state/cluster_state_bundle.h
@@ -24,10 +24,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 +39,7 @@ public:
return _derivedBucketSpaceStates;
}
uint32_t getVersion() const;
+ bool deferredActivation() const noexcept { return _deferredActivation; }
bool operator==(const ClusterStateBundle &rhs) const;
bool operator!=(const ClusterStateBundle &rhs) const { return !operator==(rhs); }
};