summaryrefslogtreecommitdiffstats
path: root/slobrok
diff options
context:
space:
mode:
authorArne Juul <arnej@verizonmedia.com>2021-08-19 11:01:51 +0000
committerArne Juul <arnej@verizonmedia.com>2021-08-20 10:27:45 +0000
commitfd87cbdf73803fdc35d2aec0674981eb365c5f9f (patch)
tree9aa20a174c3e8bf98dc3282413c53abb5141d693 /slobrok
parent6a208b7a9d1d6b8c3330d6bb56ca5fc056db4c46 (diff)
make the "Ignore" script more explicit
Diffstat (limited to 'slobrok')
-rw-r--r--slobrok/src/vespa/slobrok/server/cmd.cpp16
-rw-r--r--slobrok/src/vespa/slobrok/server/cmd.h2
-rw-r--r--slobrok/src/vespa/slobrok/server/exchange_manager.cpp2
3 files changed, 10 insertions, 10 deletions
diff --git a/slobrok/src/vespa/slobrok/server/cmd.cpp b/slobrok/src/vespa/slobrok/server/cmd.cpp
index 60060b9868f..cf1fe3bedc0 100644
--- a/slobrok/src/vespa/slobrok/server/cmd.cpp
+++ b/slobrok/src/vespa/slobrok/server/cmd.cpp
@@ -55,7 +55,7 @@ ScriptCommand::makeRegRpcSrvCmd(SBEnv &env,
}
ScriptCommand
-ScriptCommand::makeRemRemCmd(SBEnv &env, const std::string & name, const std::string &spec)
+ScriptCommand::makeIgnoreCmd(SBEnv &env, const std::string & name, const std::string &spec)
{
auto data = std::make_unique<ScriptData>(env, name, spec, nullptr);
data->_state = ScriptData::XCH_IGNORE;
@@ -92,9 +92,10 @@ ScriptCommand::doneHandler(OkState result)
RpcServerManager &rsm = data.env._rpcsrvmanager;
if (result.failed()) {
- LOG(warning, "failed [%s->%s] in state %d: %s",
- name_p, spec_p, data._state, result.errorMsg.c_str());
- cleanupReservation(data);
+ LOG(warning, "failed [%s->%s] in state %d: %s", name_p, spec_p, data._state, result.errorMsg.c_str());
+ if (data._state != ScriptData::XCH_IGNORE) {
+ cleanupReservation(data);
+ }
// XXX should handle different state errors differently?
if (data.registerRequest != nullptr) {
data.registerRequest->SetError(FRTE_RPC_METHOD_FAILED, result.errorMsg.c_str());
@@ -124,14 +125,13 @@ ScriptCommand::doneHandler(OkState result)
data._state = ScriptData::RDC_INVAL;
// all OK
data.registerRequest->Return();
- goto alldone;
+ cleanupReservation(data);
+ return;
} else if (data._state == ScriptData::XCH_IGNORE) {
- goto alldone;
+ return;
}
// no other state should be possible
LOG_ABORT("should not be reached");
- alldone:
- cleanupReservation(data);
}
//-----------------------------------------------------------------------------
diff --git a/slobrok/src/vespa/slobrok/server/cmd.h b/slobrok/src/vespa/slobrok/server/cmd.h
index 02ae16e457b..d790ae93f5c 100644
--- a/slobrok/src/vespa/slobrok/server/cmd.h
+++ b/slobrok/src/vespa/slobrok/server/cmd.h
@@ -25,7 +25,7 @@ public:
~ScriptCommand();
static ScriptCommand makeRegRpcSrvCmd(SBEnv &env, const std::string &name, const std::string &spec, FRT_RPCRequest *req);
- static ScriptCommand makeRemRemCmd(SBEnv &env, const std::string &name, const std::string &spec);
+ static ScriptCommand makeIgnoreCmd(SBEnv &env, const std::string &name, const std::string &spec);
void doneHandler(OkState result);
void doRequest();
diff --git a/slobrok/src/vespa/slobrok/server/exchange_manager.cpp b/slobrok/src/vespa/slobrok/server/exchange_manager.cpp
index 632c823a2c1..3f0545f2af6 100644
--- a/slobrok/src/vespa/slobrok/server/exchange_manager.cpp
+++ b/slobrok/src/vespa/slobrok/server/exchange_manager.cpp
@@ -68,7 +68,7 @@ void
ExchangeManager::forwardRemove(const std::string & name, const std::string & spec)
{
WorkPackage *package = new WorkPackage(WorkPackage::OP_REMOVE, *this,
- ScriptCommand::makeRemRemCmd(_env, name, spec));
+ ScriptCommand::makeIgnoreCmd(_env, name, spec));
for (const auto & entry : _partners) {
package->addItem(entry.second.get());
}