From fd87cbdf73803fdc35d2aec0674981eb365c5f9f Mon Sep 17 00:00:00 2001 From: Arne Juul Date: Thu, 19 Aug 2021 11:01:51 +0000 Subject: make the "Ignore" script more explicit --- slobrok/src/vespa/slobrok/server/cmd.cpp | 16 ++++++++-------- slobrok/src/vespa/slobrok/server/cmd.h | 2 +- slobrok/src/vespa/slobrok/server/exchange_manager.cpp | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) (limited to 'slobrok') 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(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()); } -- cgit v1.2.3