Skip to content

Commit dfd942d

Browse files
authored
fix: Do not preempt on dispatcher fiber (#4323)
1 parent 03516c2 commit dfd942d

File tree

2 files changed

+2
-2
lines changed

2 files changed

+2
-2
lines changed

src/server/dflycmd.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ void DflyCmd::TakeOver(CmdArgList args, RedisReplyBuilder* rb, ConnectionContext
434434
// We need to await for all dispatches to finish: Otherwise a transaction might be scheduled
435435
// after this function exits but before the actual shutdown.
436436
facade::DispatchTracker tracker{sf_->GetNonPriviligedListeners(), cntx->conn()};
437-
shard_set->pool()->AwaitBrief([&](unsigned index, auto* pb) {
437+
shard_set->pool()->AwaitFiberOnAll([&](unsigned index, auto* pb) {
438438
sf_->CancelBlockingOnThread();
439439
tracker.TrackOnThread();
440440
});

src/server/server_family.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -727,7 +727,7 @@ std::optional<fb2::Fiber> Pause(std::vector<facade::Listener*> listeners, Namesp
727727
// command that did not pause on the new state yet we will pause after waking up.
728728
DispatchTracker tracker{std::move(listeners), conn, true /* ignore paused commands */,
729729
true /*ignore blocking*/};
730-
shard_set->pool()->AwaitBrief([&tracker, pause_state](unsigned, util::ProactorBase*) {
730+
shard_set->pool()->AwaitFiberOnAll([&tracker, pause_state](unsigned, util::ProactorBase*) {
731731
// Commands don't suspend before checking the pause state, so
732732
// it's impossible to deadlock on waiting for a command that will be paused.
733733
tracker.TrackOnThread();

0 commit comments

Comments
 (0)