Skip to content

Commit 3354edc

Browse files
committed
[C++ SDK] Fixed bug in TQueryClient::Commit (#18701)
1 parent ad0c2a8 commit 3354edc

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

src/client/query/client.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -752,9 +752,11 @@ class TTransaction::TImpl : public std::enable_shared_from_this<TImpl> {
752752
}
753753

754754
TAsyncStatus Precommit() const {
755+
auto self = shared_from_this();
756+
755757
TStatus status(EStatus::SUCCESS, {});
756758

757-
for (auto& callback : PrecommitCallbacks) {
759+
for (auto& callback : self->PrecommitCallbacks) {
758760
if (!callback) {
759761
continue;
760762
}
@@ -775,7 +777,9 @@ class TTransaction::TImpl : public std::enable_shared_from_this<TImpl> {
775777
}
776778

777779
NThreading::TFuture<void> ProcessFailure() const {
778-
for (auto& callback : OnFailureCallbacks) {
780+
auto self = shared_from_this();
781+
782+
for (auto& callback : self->OnFailureCallbacks) {
779783
if (!callback) {
780784
continue;
781785
}
@@ -803,7 +807,7 @@ class TTransaction::TImpl : public std::enable_shared_from_this<TImpl> {
803807
co_return TCommitTransactionResult(TStatus(precommitResult));
804808
}
805809

806-
PrecommitCallbacks.clear();
810+
self->PrecommitCallbacks.clear();
807811

808812
auto commitResult = co_await self->Session_.Client_->CommitTransaction(self->TxId_, settingsCopy, self->Session_);
809813

src/client/table/impl/transaction.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@ TTransaction::TImpl::TImpl(const TSession& session, const std::string& txId)
1111

1212
TAsyncStatus TTransaction::TImpl::Precommit() const
1313
{
14+
auto self = shared_from_this();
15+
1416
TStatus status(EStatus::SUCCESS, {});
1517

16-
for (auto& callback : PrecommitCallbacks) {
18+
for (auto& callback : self->PrecommitCallbacks) {
1719
if (!callback) {
1820
continue;
1921
}
@@ -35,7 +37,9 @@ TAsyncStatus TTransaction::TImpl::Precommit() const
3537

3638
NThreading::TFuture<void> TTransaction::TImpl::ProcessFailure() const
3739
{
38-
for (auto& callback : OnFailureCallbacks) {
40+
auto self = shared_from_this();
41+
42+
for (auto& callback : self->OnFailureCallbacks) {
3943
if (!callback) {
4044
continue;
4145
}

0 commit comments

Comments
 (0)