diff options
author | Tor Brede Vekterli <vekterli@verizonmedia.com> | 2019-03-13 16:00:04 +0000 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@verizonmedia.com> | 2019-03-14 14:44:29 +0000 |
commit | c5d95cd19e86f2d3c337122226efd946f47d752e (patch) | |
tree | f6d5ab49215e41d67a8208248c58267f32617d25 /vdslib | |
parent | 4a18ca637cff723bcc45acc425689a69bcf4db66 (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.cpp | 24 | ||||
-rw-r--r-- | vdslib/src/vespa/vdslib/state/cluster_state_bundle.h | 5 |
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); } }; |