diff options
author | Tor Egge <Tor.Egge@online.no> | 2022-01-24 18:48:16 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2022-01-24 18:48:16 +0100 |
commit | ceb9ef65fa105eb019fa240ec0c816ee41c28449 (patch) | |
tree | 4981825d9e6bac7518231a2194831511e3a2aa93 /searchcore | |
parent | 308ed6bb976c31308ec25f58dd32d7e2c948d54a (diff) |
Add comment describing why a replay feed token should not be passed to GidToLidChangeHandler.
Diffstat (limited to 'searchcore')
-rw-r--r-- | searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp index 7ca3cef5c15..cdc6df1fdf2 100644 --- a/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/storeonlyfeedview.cpp @@ -247,6 +247,15 @@ StoreOnlyFeedView::internalPut(FeedToken token, const PutOperation &putOp) if (putOp.getValidDbdId(_params._subDbId)) { if (putOp.changedDbdId() && useDocumentMetaStore(serialNum)) { + /* + * Don't pass replay feed token to GidToLidChangeHandler. + * + * The passed feed token is kept until the ForceCommitDoneTask scheduled by the next + * force commit has completed. If a replay feed token containing an active throttler + * token is passed to GidToLidChangeHandler then + * TransactionLogReplayFeedHandler::make_replay_feed_token() might deadlock, waiting for + * active throttler tokens to be destroyed. + */ FeedToken token_copy = (token && !token->is_replay()) ? token : FeedToken(); _gidToLidChangeHandler.notifyPut(std::move(token_copy), docId.getGlobalId(), putOp.getLid(), serialNum); } |