Skip to content

Commit d225e23

Browse files
committed
YT-23469: Ensure proper destructor order inside |RunInFiberContext| even when exception is thrown
commit_hash:5dde84deb176c7a4be831d9870deab45f66d1237
1 parent 1455938 commit d225e23

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

yt/yt/core/concurrency/fiber_scheduler_thread.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -983,9 +983,13 @@ Y_NO_INLINE void RunInFiberContext(TFiber* fiber, TClosure callback)
983983
{
984984
TFiberSwitchHandler switchHandler(fiber);
985985
TNullPropagatingStorageGuard nullPropagatingStorageGuard;
986+
987+
auto cleanup = Finally([&callback] {
988+
// To ensure callback is destroyed before switchHandler.
989+
callback.Reset();
990+
});
991+
986992
callback();
987-
// To ensure callback is destroyed before switchHandler.
988-
callback.Reset();
989993
}
990994

991995
////////////////////////////////////////////////////////////////////////////////

0 commit comments

Comments
 (0)