diff options
author | babenko <babenko@yandex-team.com> | 2024-10-08 00:50:22 +0300 |
---|---|---|
committer | babenko <babenko@yandex-team.com> | 2024-10-08 01:10:49 +0300 |
commit | 851b2cd6a97e65d34b6d73702524523fdda7ea17 (patch) | |
tree | 979217f73c78b482d9839ed892c44f87cc5a856b | |
parent | 59fff1d6f1fd0c77de70e8193a0ffff3125b92b9 (diff) | |
download | ydb-851b2cd6a97e65d34b6d73702524523fdda7ea17.tar.gz |
YT-22977: Add indirection to OnReplyBusTerminated to avoid recursive spinlock acquisition
commit_hash:4ea49eeeccf565166e2e386bbef7e53c970ec425
-rw-r--r-- | yt/yt/core/rpc/service_detail.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/yt/yt/core/rpc/service_detail.cpp b/yt/yt/core/rpc/service_detail.cpp index d23ef9ba4c..9fcf0d7d8f 100644 --- a/yt/yt/core/rpc/service_detail.cpp +++ b/yt/yt/core/rpc/service_detail.cpp @@ -2183,10 +2183,12 @@ void TServiceBase::RegisterRequest(TServiceContext* context) auto& replyBusData = it->second; replyBusData.Contexts.insert(context); if (inserted) { - replyBusData.BusTerminationHandler = BIND_NO_PROPAGATE( - &TServiceBase::OnReplyBusTerminated, - MakeWeak(this), - MakeWeak(replyBus.Get())); + replyBusData.BusTerminationHandler = + BIND_NO_PROPAGATE( + &TServiceBase::OnReplyBusTerminated, + MakeWeak(this), + MakeWeak(replyBus)) + .Via(TDispatcher::Get()->GetHeavyInvoker()); replyBus->SubscribeTerminated(replyBusData.BusTerminationHandler); } } |