diff options
-rw-r--r-- | searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp | 50 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/transactionlog/translogserver.h | 17 |
2 files changed, 5 insertions, 62 deletions
diff --git a/searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp b/searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp index ee9b0ce81e8..a0853dcbd86 100644 --- a/searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp +++ b/searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp @@ -36,23 +36,19 @@ class SyncHandler : public std::enable_shared_from_this<SyncHandler> std::atomic<bool> & _closed; FRT_RPCRequest & _req; Domain::SP _domain; - TransLogServer::Session::SP _session; SerialNum _syncTo; public: - SyncHandler(std::atomic<bool>& closed, FRT_RPCRequest *req, const Domain::SP &domain, - const TransLogServer::Session::SP &session, SerialNum syncTo) noexcept; + SyncHandler(std::atomic<bool>& closed, FRT_RPCRequest *req, Domain::SP domain, SerialNum syncTo) noexcept; ~SyncHandler(); void poll(); }; -SyncHandler::SyncHandler(std::atomic<bool>& closed, FRT_RPCRequest *req, const Domain::SP &domain, - const TransLogServer::Session::SP &session, SerialNum syncTo) noexcept +SyncHandler::SyncHandler(std::atomic<bool>& closed, FRT_RPCRequest *req, Domain::SP domain, SerialNum syncTo) noexcept : _closed(closed), _req(*req), - _domain(domain), - _session(session), + _domain(std::move(domain)), _syncTo(syncTo) { } @@ -63,8 +59,7 @@ void SyncHandler::poll() { SerialNum synced(_domain->getSynced()); - if (_session->getDown() || - _domain->getMarkedDeleted() || + if (_domain->getMarkedDeleted() || _closed.load(std::memory_order_acquire) || synced >= _syncTo) { @@ -253,9 +248,6 @@ TransLogServer::findDomain(stringref domainName) const void TransLogServer::exportRPC(FRT_Supervisor & supervisor) { - _supervisor->SetSessionInitHook(FRT_METHOD(TransLogServer::initSession), this); - _supervisor->SetSessionFiniHook(FRT_METHOD(TransLogServer::finiSession), this); - _supervisor->SetSessionDownHook(FRT_METHOD(TransLogServer::downSession), this); FRT_ReflectionBuilder rb( & supervisor); //-- Create Domain ----------------------------------------------------------- @@ -676,37 +668,6 @@ TransLogServer::domainPrune(FRT_RPCRequest *req) ret.AddInt32(retval); } -const TransLogServer::Session::SP & -TransLogServer::getSession(FRT_RPCRequest *req) -{ - FNET_Connection *conn = req->GetConnection(); - void *vctx = conn->GetContext()._value.VOIDP; - Session::SP *sessionspp = static_cast<Session::SP *>(vctx); - return *sessionspp; -} - -void -TransLogServer::initSession(FRT_RPCRequest *req) -{ - req->GetConnection()->SetContext(new Session::SP(new Session())); -} - -void -TransLogServer::finiSession(FRT_RPCRequest *req) -{ - FNET_Connection *conn = req->GetConnection(); - void *vctx = conn->GetContext()._value.VOIDP; - conn->GetContextPT()->_value.VOIDP = nullptr; - Session::SP *sessionspp = static_cast<Session::SP *>(vctx); - delete sessionspp; -} - -void -TransLogServer::downSession(FRT_RPCRequest *req) -{ - getSession(req)->setDown(); -} - void TransLogServer::domainSync(FRT_RPCRequest *req) { @@ -715,7 +676,6 @@ TransLogServer::domainSync(FRT_RPCRequest *req) SerialNum syncTo(params[1]._intval64); LOG(debug, "domainSync(%s, %" PRIu64 ")", domainName, syncTo); Domain::SP domain(findDomain(domainName)); - Session::SP session(getSession(req)); if ( ! domain) { FRT_Values &rvals = *req->GetReturn(); @@ -725,7 +685,7 @@ TransLogServer::domainSync(FRT_RPCRequest *req) return; } - auto syncHandler = std::make_shared<SyncHandler>(_closed, req, domain, session, syncTo); + auto syncHandler = std::make_shared<SyncHandler>(_closed, req, std::move(domain), syncTo); syncHandler->poll(); } diff --git a/searchlib/src/vespa/searchlib/transactionlog/translogserver.h b/searchlib/src/vespa/searchlib/transactionlog/translogserver.h index 9dcd8cdb6e5..7f17adc99f7 100644 --- a/searchlib/src/vespa/searchlib/transactionlog/translogserver.h +++ b/searchlib/src/vespa/searchlib/transactionlog/translogserver.h @@ -35,17 +35,6 @@ public: std::shared_ptr<Writer> getWriter(const vespalib::string & domainName) const override; TransLogServer & setDomainConfig(const DomainConfig & cfg); - class Session - { - bool _down; - public: - typedef std::shared_ptr<Session> SP; - - Session() : _down(false) { } - bool getDown() const { return _down; } - void setDown() { _down = true; } - }; - private: bool onStop() override; void run() override; @@ -65,17 +54,11 @@ private: void domainSessionClose(FRT_RPCRequest *req); void domainSync(FRT_RPCRequest *req); - void initSession(FRT_RPCRequest *req); - void finiSession(FRT_RPCRequest *req); - void downSession(FRT_RPCRequest *req); - std::vector<vespalib::string> getDomainNames(); DomainSP findDomain(vespalib::stringref name) const; vespalib::string dir() const { return _baseDir + "/" + _name; } vespalib::string domainList() const { return dir() + "/" + _name + ".domains"; } - static const Session::SP & getSession(FRT_RPCRequest *req); - using DomainList = std::map<vespalib::string, DomainSP >; using ReadGuard = std::shared_lock<std::shared_mutex>; using WriteGuard = std::unique_lock<std::shared_mutex>; |