diff options
author | Arne Juul <arnej@verizonmedia.com> | 2021-08-11 14:42:34 +0000 |
---|---|---|
committer | Arne Juul <arnej@verizonmedia.com> | 2021-08-11 14:47:53 +0000 |
commit | d34ca2eae64e5dccc2de4857a0543e9a70959e12 (patch) | |
tree | 603eba40633f45d8c088bd73068516c0f4aaedc5 | |
parent | 3fe4db3d2d9f5097dd47d7399c615cd86942020f (diff) |
MapView -> ServiceMapMirror
* add assert for generation match
* un-constify access
-rw-r--r-- | slobrok/src/vespa/slobrok/server/CMakeLists.txt | 2 | ||||
-rw-r--r-- | slobrok/src/vespa/slobrok/server/remote_slobrok.cpp | 14 | ||||
-rw-r--r-- | slobrok/src/vespa/slobrok/server/remote_slobrok.h | 6 | ||||
-rw-r--r-- | slobrok/src/vespa/slobrok/server/service_map_mirror.cpp (renamed from slobrok/src/vespa/slobrok/server/map_view.cpp) | 19 | ||||
-rw-r--r-- | slobrok/src/vespa/slobrok/server/service_map_mirror.h (renamed from slobrok/src/vespa/slobrok/server/map_view.h) | 8 |
5 files changed, 25 insertions, 24 deletions
diff --git a/slobrok/src/vespa/slobrok/server/CMakeLists.txt b/slobrok/src/vespa/slobrok/server/CMakeLists.txt index d6f54413e4a..1492676cd3a 100644 --- a/slobrok/src/vespa/slobrok/server/CMakeLists.txt +++ b/slobrok/src/vespa/slobrok/server/CMakeLists.txt @@ -11,7 +11,7 @@ vespa_add_library(slobrok_slobrokserver map_diff.cpp map_listener.cpp map_source.cpp - map_view.cpp + service_map_mirror.cpp metrics_producer.cpp monitor.cpp named_service.cpp diff --git a/slobrok/src/vespa/slobrok/server/remote_slobrok.cpp b/slobrok/src/vespa/slobrok/server/remote_slobrok.cpp index 183b3cf9d3d..0b9872c03e2 100644 --- a/slobrok/src/vespa/slobrok/server/remote_slobrok.cpp +++ b/slobrok/src/vespa/slobrok/server/remote_slobrok.cpp @@ -101,7 +101,7 @@ void RemoteSlobrok::maybeStartFetch() { if (_remote == nullptr) return; _remFetchReq = getSupervisor()->AllocRPCRequest(); _remFetchReq->SetMethodName("slobrok.internal.fetchLocalView"); - _remFetchReq->GetParams()->AddInt32(_mapView.currentGeneration().getAsInt()); + _remFetchReq->GetParams()->AddInt32(_serviceMapMirror.currentGeneration().getAsInt()); _remFetchReq->GetParams()->AddInt32(5000); _remote->InvokeAsync(_remFetchReq, 15.0, this); } @@ -137,12 +137,12 @@ void RemoteSlobrok::handleFetchResult() { } MapDiff diff(diff_from, std::move(removed), std::move(updated), diff_to); if (diff_from == 0) { - _mapView.clear(); - _mapView.apply(std::move(diff)); - } else if (diff_from == _mapView.currentGeneration().getAsInt()) { - _mapView.apply(std::move(diff)); + _serviceMapMirror.clear(); + _serviceMapMirror.apply(std::move(diff)); + } else if (diff_from == _serviceMapMirror.currentGeneration().getAsInt()) { + _serviceMapMirror.apply(std::move(diff)); } else { - _mapView.clear(); + _serviceMapMirror.clear(); success = false; } } else { @@ -152,7 +152,7 @@ void RemoteSlobrok::handleFetchResult() { LOG(warning, "fetchLocalView() failed with partner %s: %s", getName().c_str(), _remFetchReq->GetErrorMessage()); } - _mapView.clear(); + _serviceMapMirror.clear(); success = false; } _remFetchReq->SubRef(); diff --git a/slobrok/src/vespa/slobrok/server/remote_slobrok.h b/slobrok/src/vespa/slobrok/server/remote_slobrok.h index 9818c879b36..9e3fb1df55f 100644 --- a/slobrok/src/vespa/slobrok/server/remote_slobrok.h +++ b/slobrok/src/vespa/slobrok/server/remote_slobrok.h @@ -5,7 +5,7 @@ #include "cmd.h" #include "i_rpc_server_manager.h" #include "managed_rpc_server.h" -#include "map_view.h" +#include "service_map_mirror.h" #include <deque> namespace slobrok { @@ -45,7 +45,7 @@ private: ExchangeManager &_exchanger; RpcServerManager &_rpcsrvmanager; FRT_Target *_remote; - MapView _mapView; + ServiceMapMirror _serviceMapMirror; ManagedRpcServer _rpcserver; Reconnecter _reconnecter; int _failCnt; @@ -75,7 +75,7 @@ public: void invokeAsync(FRT_RPCRequest *req, double timeout, FRT_IRequestWait *rwaiter); const std::string & getName() const { return _rpcserver.getName(); } const std::string & getSpec() const { return _rpcserver.getSpec(); } - const MapView &remoteView() const { return _mapView; } + ServiceMapMirror &remoteMap() { return _serviceMapMirror; } // interfaces implemented: void notifyFailedRpcSrv(ManagedRpcServer *rpcsrv, std::string errmsg) override; diff --git a/slobrok/src/vespa/slobrok/server/map_view.cpp b/slobrok/src/vespa/slobrok/server/service_map_mirror.cpp index 50d1fd74667..8b9a40efed7 100644 --- a/slobrok/src/vespa/slobrok/server/map_view.cpp +++ b/slobrok/src/vespa/slobrok/server/service_map_mirror.cpp @@ -1,24 +1,25 @@ // Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include "map_view.h" +#include "service_map_mirror.h" #include <vespa/log/log.h> -LOG_SETUP(".slobrok.map_view"); +LOG_SETUP(".slobrok.service_map_mirror"); namespace slobrok { -MapView::MapView() +ServiceMapMirror::ServiceMapMirror() : _map(), _currGen(0), _lock() {} -MapView::~MapView() { +ServiceMapMirror::~ServiceMapMirror() { clear(); } -void MapView::apply(const MapDiff &diff) { +void ServiceMapMirror::apply(const MapDiff &diff) { std::lock_guard guard(_lock); LOG(debug, "Applying diff from gen %u", diff.fromGen.getAsInt()); + LOG_ASSERT(diff.fromGen == _currGen); for (const auto & name : diff.removed) { auto iter = _map.find(name); if (iter != _map.end()) { @@ -52,7 +53,7 @@ void MapView::apply(const MapDiff &diff) { _currGen = diff.toGen; } -void MapView::clear() { +void ServiceMapMirror::clear() { std::lock_guard guard(_lock); for (const auto & [ k, v ] : _map) { ServiceMapping mapping{k, v}; @@ -64,7 +65,7 @@ void MapView::clear() { _currGen.reset(); } -ServiceMappingList MapView::allMappings() const { +ServiceMappingList ServiceMapMirror::allMappings() const { std::lock_guard guard(_lock); ServiceMappingList result; result.reserve(_map.size()); @@ -74,12 +75,12 @@ ServiceMappingList MapView::allMappings() const { return result; } -void MapView::registerListener(MapListener &listener) { +void ServiceMapMirror::registerListener(MapListener &listener) { std::lock_guard guard(_lock); _listeners.insert(&listener); } -void MapView::unregisterListener(MapListener &listener) { +void ServiceMapMirror::unregisterListener(MapListener &listener) { std::lock_guard guard(_lock); _listeners.erase(&listener); } diff --git a/slobrok/src/vespa/slobrok/server/map_view.h b/slobrok/src/vespa/slobrok/server/service_map_mirror.h index 441549bf306..4cd1c91b7f1 100644 --- a/slobrok/src/vespa/slobrok/server/map_view.h +++ b/slobrok/src/vespa/slobrok/server/service_map_mirror.h @@ -13,16 +13,16 @@ namespace slobrok { /** - * @class MapView + * @class ServiceMapMirror * @brief Holds a name->spec map which can be incrementally updated **/ -class MapView : public MapSource +class ServiceMapMirror : public MapSource { public: using Generation = vespalib::GenCnt; - MapView(); - ~MapView(); + ServiceMapMirror(); + ~ServiceMapMirror(); /** update according to diff */ void apply(const MapDiff &diff); |