Skip to content

Commit 7847bc4

Browse files
committed
fix
1 parent c087bd7 commit 7847bc4

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

ydb/core/kqp/runtime/kqp_write_actor.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1186,17 +1186,18 @@ class TKqpTableWriteActor : public TActorBootstrapped<TKqpTableWriteActor> {
11861186
return;
11871187
}
11881188

1189+
const auto& reattachState = TxManager->GetReattachState(ev->Get()->TabletId);
1190+
11891191
const auto state = TxManager->GetState(ev->Get()->TabletId);
11901192
if ((state == IKqpTransactionManager::PREPARED
11911193
|| state == IKqpTransactionManager::EXECUTING)
11921194
&& TxManager->ShouldReattach(ev->Get()->TabletId, TlsActivationContext->Now())) {
11931195
// Disconnected while waiting for other shards to prepare
1194-
auto& reattachState = TxManager->GetReattachState(ev->Get()->TabletId);
11951196
CA_LOG_N("Shard " << ev->Get()->TabletId << " delivery problem (reattaching in "
11961197
<< reattachState.ReattachInfo.Delay << ")");
11971198

11981199
Schedule(reattachState.ReattachInfo.Delay, new TEvPrivate::TEvReattachToShard(ev->Get()->TabletId));
1199-
} else if (state == IKqpTransactionManager::EXECUTING && !ev->Get()->NotDelivered) {
1200+
} else if (state == IKqpTransactionManager::EXECUTING && (!ev->Get()->NotDelivered || reattachState.Cookie != 0)) {
12001201
TxManager->SetError(ev->Get()->TabletId);
12011202
RuntimeError(
12021203
NYql::NDqProto::StatusIds::UNDETERMINED,
@@ -1209,7 +1210,7 @@ class TKqpTableWriteActor : public TActorBootstrapped<TKqpTableWriteActor> {
12091210
} else if (state == IKqpTransactionManager::PROCESSING
12101211
|| state == IKqpTransactionManager::PREPARING
12111212
|| state == IKqpTransactionManager::PREPARED
1212-
|| (state == IKqpTransactionManager::EXECUTING && ev->Get()->NotDelivered)) {
1213+
|| (state == IKqpTransactionManager::EXECUTING && (ev->Get()->NotDelivered && reattachState.Cookie == 0))) {
12131214
TxManager->SetError(ev->Get()->TabletId);
12141215
RuntimeError(
12151216
NYql::NDqProto::StatusIds::UNAVAILABLE,
@@ -1228,7 +1229,7 @@ class TKqpTableWriteActor : public TActorBootstrapped<TKqpTableWriteActor> {
12281229
const auto& record = ev->Get()->Record;
12291230
const ui64 shardId = record.GetTabletId();
12301231

1231-
auto& reattachState = TxManager->GetReattachState(shardId);
1232+
const auto& reattachState = TxManager->GetReattachState(shardId);
12321233
if (reattachState.Cookie != ev->Cookie) {
12331234
return;
12341235
}

ydb/core/kqp/ut/effects/ya.make

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ SRCS(
1515
kqp_immediate_effects_ut.cpp
1616
kqp_inplace_update_ut.cpp
1717
kqp_overload_ut.cpp
18+
kqp_reattach_ut.cpp
1819
kqp_write_ut.cpp
1920
)
2021

0 commit comments

Comments
 (0)