aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryumkam <yumkam7@ydb.tech>2025-07-02 13:21:57 +0300
committerGitHub <noreply@github.com>2025-07-02 13:21:57 +0300
commite733e66b3f052bee9e3c86406dddf2093a6c73b4 (patch)
tree30e992cdaa547a6f30c536648a2e239673addd68
parent98a1ee00040f09f3ae3434468dab60e577eb27e3 (diff)
downloadydb-e733e66b3f052bee9e3c86406dddf2093a6c73b4.tar.gz
[asan] core/kqp/ut/tx/kqp_locks_tricky_ut: fix out-of-scope use (#20461)
-rw-r--r--ydb/core/kqp/ut/tx/kqp_locks_tricky_ut.cpp20
1 files changed, 15 insertions, 5 deletions
diff --git a/ydb/core/kqp/ut/tx/kqp_locks_tricky_ut.cpp b/ydb/core/kqp/ut/tx/kqp_locks_tricky_ut.cpp
index 92c8cc06bc0..641c9f8ff88 100644
--- a/ydb/core/kqp/ut/tx/kqp_locks_tricky_ut.cpp
+++ b/ydb/core/kqp/ut/tx/kqp_locks_tricky_ut.cpp
@@ -17,6 +17,7 @@
#include <library/cpp/json/json_reader.h>
#include <util/string/printf.h>
+#include <util/generic/scope.h>
namespace NKikimr::NKqp {
@@ -62,7 +63,7 @@ Y_UNIT_TEST_SUITE(KqpLocksTricky) {
bool blockResponses = true;
auto grab = [&](TAutoPtr<IEventHandle> &ev) -> auto {
- if (blockResponses && ev->GetTypeRewrite() == TEvKqpExecuter::TEvTxResponse::EventType) {
+ if (ev->GetTypeRewrite() == TEvKqpExecuter::TEvTxResponse::EventType && blockResponses) {
auto* msg = ev->Get<TEvKqpExecuter::TEvTxResponse>();
UNIT_ASSERT_C(msg->Snapshot.IsValid(), "unexpected tx response reply without the snapshot");
executerResponses.emplace_back(ev.Release());
@@ -77,7 +78,10 @@ Y_UNIT_TEST_SUITE(KqpLocksTricky) {
return executerResponses.size() > 0;
});
- runtime.SetObserverFunc(grab);
+ auto saveObserver = runtime.SetObserverFunc(grab);
+ Y_DEFER {
+ runtime.SetObserverFunc(saveObserver);
+ };
auto future = kikimr.RunInThreadPool([&]{
auto txc = TTxControl::BeginTx(TTxSettings::SerializableRW()).CommitTx();
@@ -181,7 +185,10 @@ Y_UNIT_TEST_SUITE(KqpLocksTricky) {
return TTestActorRuntime::EEventAction::PROCESS;
};
- runtime.SetObserverFunc(grab);
+ auto saveObserver = runtime.SetObserverFunc(grab);
+ Y_DEFER {
+ runtime.SetObserverFunc(saveObserver);
+ };
std::optional<TTransaction> tx;
@@ -279,7 +286,7 @@ Y_UNIT_TEST_SUITE(KqpLocksTricky) {
bool blockWrites = true;
auto grab = [&](TAutoPtr<IEventHandle> &ev) -> auto {
- if (blockWrites && ev->GetTypeRewrite() == NKikimr::NEvents::TDataEvents::TEvWrite::EventType) {
+ if (ev->GetTypeRewrite() == NKikimr::NEvents::TDataEvents::TEvWrite::EventType && blockWrites) {
auto* evWrite = ev->Get<NKikimr::NEvents::TDataEvents::TEvWrite>();
UNIT_ASSERT(evWrite->Record.OperationsSize() == 0);
UNIT_ASSERT(evWrite->Record.GetLocks().GetLocks().size() != 0);
@@ -295,7 +302,10 @@ Y_UNIT_TEST_SUITE(KqpLocksTricky) {
return writes.size() > 0;
});
- runtime.SetObserverFunc(grab);
+ auto saveObserver = runtime.SetObserverFunc(grab);
+ Y_DEFER {
+ runtime.SetObserverFunc(saveObserver);
+ };
auto future = kikimr.RunInThreadPool([&]{
auto txc = TTxControl::BeginTx(TTxSettings::SerializableRW()).CommitTx();