aboutsummaryrefslogtreecommitdiffstats
path: root/slobrok
diff options
context:
space:
mode:
authorArne Juul <arnej@yahoo-inc.com>2019-05-13 13:51:57 +0000
committerArne Juul <arnej@yahoo-inc.com>2019-05-14 09:36:05 +0000
commit7f7e6ef483a2cd32462f58e20a449b1e5f0cde45 (patch)
treed5cf67dc489d575be0e6c03161e478ecd71fb3b0 /slobrok
parent81cda304c2c58e381f334a90817dd1ea63a56fe0 (diff)
remove usage and implementation of "slobrok.mirror.fetch" API
Diffstat (limited to 'slobrok')
-rw-r--r--slobrok/src/vespa/slobrok/sbmirror.cpp50
-rw-r--r--slobrok/src/vespa/slobrok/sbmirror.h2
-rw-r--r--slobrok/src/vespa/slobrok/server/rpchooks.cpp23
-rw-r--r--slobrok/src/vespa/slobrok/server/rpchooks.h1
-rw-r--r--slobrok/src/vespa/slobrok/server/rpcmirror.cpp97
-rw-r--r--slobrok/src/vespa/slobrok/server/rpcmirror.h22
6 files changed, 1 insertions, 194 deletions
diff --git a/slobrok/src/vespa/slobrok/sbmirror.cpp b/slobrok/src/vespa/slobrok/sbmirror.cpp
index d36e456995c..f0a810dad10 100644
--- a/slobrok/src/vespa/slobrok/sbmirror.cpp
+++ b/slobrok/src/vespa/slobrok/sbmirror.cpp
@@ -19,7 +19,6 @@ MirrorAPI::MirrorAPI(FRT_Supervisor &orb, const ConfiguratorFactory & config)
_reqPending(false),
_scheduled(false),
_reqDone(false),
- _useOldProto(false),
_specs(),
_specsGen(),
_updates(),
@@ -122,42 +121,6 @@ MirrorAPI::ready() const
return _updates.getAsInt() != 0;
}
-
-// returns true if reconnect is needed
-bool
-MirrorAPI::handleMirrorFetch()
-{
- if (strcmp(_req->GetReturnSpec(), "SSi") != 0) {
- LOG(warning, "unknown return types '%s' from RPC request", _req->GetReturnSpec());
- return true;
- }
-
- FRT_Values &answer = *(_req->GetReturn());
-
- uint32_t numNames = answer[0]._string_array._len;
- FRT_StringValue *n = answer[0]._string_array._pt;
- uint32_t numSpecs = answer[1]._string_array._len;
- FRT_StringValue *s = answer[1]._string_array._pt;
- uint32_t newGen = answer[2]._intval32;
-
- if (numNames != numSpecs) {
- LOG(warning, "inconsistent array lengths from RPC mirror request");
- return true;
- }
-
- if (_specsGen != newGen) {
- SpecList specs;
-
- for (uint32_t idx = 0; idx < numNames; idx++) {
- specs.push_back(std::make_pair(std::string(n[idx]._str),
- std::string(s[idx]._str)));
- }
- updateTo(specs, newGen);
- }
- return false;
-}
-
-
// returns true if reconnect is needed
bool
MirrorAPI::handleIncrementalFetch()
@@ -261,13 +224,7 @@ MirrorAPI::handleReqDone()
bool reconn = (_target == 0);
if (_req->IsError()) {
- if (_req->GetErrorCode() == FRTE_RPC_NO_SUCH_METHOD && !_useOldProto) {
- _useOldProto = true;
- return false;
- }
reconn = true;
- } else if (_useOldProto) {
- reconn = handleMirrorFetch();
} else {
reconn = handleIncrementalFetch();
}
@@ -296,7 +253,6 @@ MirrorAPI::handleReconnect()
_target = _orb.GetTarget(_currSlobrok.c_str());
}
_specsGen.reset();
- _useOldProto = false;
if (_target == 0) {
if (_rpc_ms < 50000) {
_rpc_ms += 100;
@@ -327,11 +283,7 @@ MirrorAPI::makeRequest()
}
_req = _orb.AllocRPCRequest(_req);
- if (_useOldProto) {
- _req->SetMethodName("slobrok.mirror.fetch");
- } else {
- _req->SetMethodName("slobrok.incremental.fetch");
- }
+ _req->SetMethodName("slobrok.incremental.fetch");
_req->GetParams()->AddInt32(_specsGen.getAsInt()); // gencnt
_req->GetParams()->AddInt32(5000); // mstimeout
_target->InvokeAsync(_req, 0.001 * _rpc_ms, this);
diff --git a/slobrok/src/vespa/slobrok/sbmirror.h b/slobrok/src/vespa/slobrok/sbmirror.h
index 171c88b8700..152886fc02e 100644
--- a/slobrok/src/vespa/slobrok/sbmirror.h
+++ b/slobrok/src/vespa/slobrok/sbmirror.h
@@ -79,7 +79,6 @@ private:
void updateTo(SpecList& newSpecs, uint32_t newGen);
bool handleIncrementalFetch();
- bool handleMirrorFetch();
void handleReconfig();
bool handleReqDone();
@@ -93,7 +92,6 @@ private:
bool _reqPending;
bool _scheduled;
bool _reqDone;
- bool _useOldProto;
SpecList _specs;
vespalib::GenCnt _specsGen;
vespalib::GenCnt _updates;
diff --git a/slobrok/src/vespa/slobrok/server/rpchooks.cpp b/slobrok/src/vespa/slobrok/server/rpchooks.cpp
index ff1ce514084..63b09894686 100644
--- a/slobrok/src/vespa/slobrok/server/rpchooks.cpp
+++ b/slobrok/src/vespa/slobrok/server/rpchooks.cpp
@@ -181,16 +181,6 @@ RPCHooks::initRPC(FRT_Supervisor *supervisor)
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
- rb.DefineMethod("slobrok.mirror.fetch", "ii", "SSi",
- FRT_METHOD(RPCHooks::rpc_mirrorFetch), this);
- rb.MethodDesc("Fetch or update mirror of name to spec map");
- rb.ParamDesc("gencnt", "generation already known by client");
- rb.ParamDesc("timeout", "How many milliseconds to wait for changes"
- "before returning if nothing has changed (max=10000)");
- rb.ReturnDesc("names", "Array of NamedService names");
- rb.ReturnDesc("specs", "Array of connection specifications (same order)");
- rb.ReturnDesc("newgen", "Generation count for new version of the map");
- //-------------------------------------------------------------------------
rb.DefineMethod("slobrok.incremental.fetch", "ii", "iSSSi",
FRT_METHOD(RPCHooks::rpc_incrementalFetch), this);
rb.MethodDesc("Fetch or update mirror of name to spec map");
@@ -505,19 +495,6 @@ RPCHooks::rpc_listAllRpcServers(FRT_RPCRequest *req)
void
-RPCHooks::rpc_mirrorFetch(FRT_RPCRequest *req)
-{
- _cnts.mirrorReqs++;
- FRT_Values &args = *req->GetParams();
-
- vespalib::GenCnt gencnt(args[0]._intval32);
- uint32_t msTimeout = args[1]._intval32;
-
- req->getStash().create<MirrorFetch>(_env.getSupervisor(), req,
- _rpcsrvmap.visibleMap(), gencnt).invoke(msTimeout);
-}
-
-void
RPCHooks::rpc_incrementalFetch(FRT_RPCRequest *req)
{
_cnts.mirrorReqs++;
diff --git a/slobrok/src/vespa/slobrok/server/rpchooks.h b/slobrok/src/vespa/slobrok/server/rpchooks.h
index 2f7e55d8fce..58866e68a4e 100644
--- a/slobrok/src/vespa/slobrok/server/rpchooks.h
+++ b/slobrok/src/vespa/slobrok/server/rpchooks.h
@@ -65,7 +65,6 @@ private:
void rpc_listManagedRpcServers(FRT_RPCRequest *req);
void rpc_lookupManaged(FRT_RPCRequest *req);
void rpc_listAllRpcServers(FRT_RPCRequest *req);
- void rpc_mirrorFetch(FRT_RPCRequest *req);
void rpc_incrementalFetch(FRT_RPCRequest *req);
void rpc_wantAdd(FRT_RPCRequest *req);
void rpc_doAdd(FRT_RPCRequest *req);
diff --git a/slobrok/src/vespa/slobrok/server/rpcmirror.cpp b/slobrok/src/vespa/slobrok/server/rpcmirror.cpp
index 46d7f70288b..1529ea93d4e 100644
--- a/slobrok/src/vespa/slobrok/server/rpcmirror.cpp
+++ b/slobrok/src/vespa/slobrok/server/rpcmirror.cpp
@@ -9,103 +9,6 @@ LOG_SETUP(".rpcmirror");
namespace slobrok {
-MirrorFetch::MirrorFetch(FRT_Supervisor *orb,
- FRT_RPCRequest *req,
- VisibleMap &map,
- vespalib::GenCnt gen)
- : FNET_Task(orb->GetScheduler()),
- _req(req),
- _map(map),
- _gen(gen)
-{ }
-
-
-MirrorFetch::~MirrorFetch() { }
-
-
-void
-MirrorFetch::completeReq()
-{
- vespalib::GenCnt newgen = _map.genCnt();
- if (newgen == _gen) { // no change
- _req->GetReturn()->AddStringArray(0);
- _req->GetReturn()->AddStringArray(0);
- } else {
- std::vector<const NamedService *> rpcsrvlist = _map.allVisible();
-
- FRT_Values &dst = *_req->GetReturn();
- size_t sz = rpcsrvlist.size();
- FRT_StringValue *names = dst.AddStringArray(sz);
- FRT_StringValue *specs = dst.AddStringArray(sz);
- for (uint32_t i = 0; i < rpcsrvlist.size(); ++i) {
- dst.SetString(&names[i], rpcsrvlist[i]->getName().c_str());
- dst.SetString(&specs[i], rpcsrvlist[i]->getSpec().c_str());
- }
- if (sz > 0) {
- LOG(debug, "mirrorFetch %p -> %u, last [%s,%s]",
- this,
- (unsigned int)sz,
- dst[0]._string_array._pt[sz-1]._str,
- dst[1]._string_array._pt[sz-1]._str);
- } else {
- LOG(debug, "mirrorFetch %p -> 0 size", this);
- }
- }
- _req->GetReturn()->AddInt32(newgen.getAsInt());
- LOG(debug, "mirrorFetch %p done (gen %d -> gen %d)",
- this, _gen.getAsInt(), newgen.getAsInt());
- _req->Return();
-}
-
-
-void
-MirrorFetch::PerformTask()
-{
- // cancel update notification
- _map.removeUpdateListener(this);
- completeReq();
-}
-
-
-void
-MirrorFetch::updated(VisibleMap &map)
-{
- LOG_ASSERT(&map == &_map);
- (void) &map;
- // unschedule timeout task
- Unschedule();
- completeReq();
-}
-
-
-void
-MirrorFetch::aborted(VisibleMap &map)
-{
- LOG_ASSERT(&map == &_map);
- (void) &map;
- // unschedule timeout task
- Unschedule();
- _req->SetError(FRTE_RPC_METHOD_FAILED, "slobrok shutting down");
- _req->Return();
-}
-
-
-void
-MirrorFetch::invoke(uint32_t msTimeout)
-{
- _req->Detach();
- LOG(debug, "MirrorFetch %p invoked from %s (gen %d, timeout %d ms)",
- this, _req->GetConnection()->GetSpec(), _gen.getAsInt(), msTimeout);
- if (_map.genCnt() != _gen || msTimeout == 0) {
- completeReq();
- } else {
- _map.addUpdateListener(this); // register as update listener
- if (msTimeout > 10000)
- msTimeout = 10000;
- Schedule((double) msTimeout / 1000.0);
- }
-}
-
IncrementalFetch::IncrementalFetch(FRT_Supervisor *orb,
FRT_RPCRequest *req,
VisibleMap &map,
diff --git a/slobrok/src/vespa/slobrok/server/rpcmirror.h b/slobrok/src/vespa/slobrok/server/rpcmirror.h
index e1c1113a0d2..ce7ca5fca32 100644
--- a/slobrok/src/vespa/slobrok/server/rpcmirror.h
+++ b/slobrok/src/vespa/slobrok/server/rpcmirror.h
@@ -9,28 +9,6 @@ class FRT_Supervisor;
namespace slobrok {
-class MirrorFetch : public FNET_Task,
- public VisibleMap::IUpdateListener
-{
-private:
- FRT_RPCRequest *_req;
- VisibleMap &_map;
- vespalib::GenCnt _gen;
-
-public:
- MirrorFetch(const MirrorFetch &) = delete;
- MirrorFetch& operator=(const MirrorFetch &) = delete;
-
- MirrorFetch(FRT_Supervisor *orb, FRT_RPCRequest *req, VisibleMap &map, vespalib::GenCnt gen);
- ~MirrorFetch();
-
- void completeReq();
- void PerformTask() override;
- void updated(VisibleMap &map) override;
- void aborted(VisibleMap &map) override;
- void invoke(uint32_t msTimeout);
-};
-
class IncrementalFetch : public FNET_Task,
public VisibleMap::IUpdateListener
{