summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArne Juul <arnej@verizonmedia.com>2021-08-11 14:42:34 +0000
committerArne Juul <arnej@verizonmedia.com>2021-08-11 14:47:53 +0000
commitd34ca2eae64e5dccc2de4857a0543e9a70959e12 (patch)
tree603eba40633f45d8c088bd73068516c0f4aaedc5
parent3fe4db3d2d9f5097dd47d7399c615cd86942020f (diff)
MapView -> ServiceMapMirror
* add assert for generation match * un-constify access
-rw-r--r--slobrok/src/vespa/slobrok/server/CMakeLists.txt2
-rw-r--r--slobrok/src/vespa/slobrok/server/remote_slobrok.cpp14
-rw-r--r--slobrok/src/vespa/slobrok/server/remote_slobrok.h6
-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);