@@ -313,19 +313,21 @@ class TCommitOperation {
313313 auto & lock = evWrite.Record .GetLocks ().GetLocks ()[0 ];
314314 SendingShards = std::set<ui64>(locks.GetSendingShards ().begin (), locks.GetSendingShards ().end ());
315315 ReceivingShards = std::set<ui64>(locks.GetReceivingShards ().begin (), locks.GetReceivingShards ().end ());
316- if (!ReceivingShards.size () || !SendingShards.size ()) {
317- ReceivingShards.clear ();
318- SendingShards.clear ();
319- } else if (!locks.HasArbiterColumnShard ()) {
320- ArbiterColumnShard = *ReceivingShards.begin ();
321- if (!ReceivingShards.contains (TabletId) && !SendingShards.contains (TabletId)) {
322- return TConclusionStatus::Fail (" shard is incorrect for sending/receiving lists" );
323- }
324- } else {
325- ArbiterColumnShard = locks.GetArbiterColumnShard ();
326- AFL_VERIFY (ArbiterColumnShard);
327- if (!ReceivingShards.contains (TabletId) && !SendingShards.contains (TabletId)) {
328- return TConclusionStatus::Fail (" shard is incorrect for sending/receiving lists" );
316+ if (SendingShards.empty () != ReceivingShards.empty ()) {
317+ return TConclusionStatus::Fail (" incorrect synchronization data (send/receiving lists)" );
318+ }
319+ if (ReceivingShards.size () && SendingShards.size ()) {
320+ if (!locks.HasArbiterColumnShard ()) {
321+ ArbiterColumnShard = *ReceivingShards.begin ();
322+ if (!ReceivingShards.contains (TabletId) && !SendingShards.contains (TabletId)) {
323+ return TConclusionStatus::Fail (" shard is incorrect for sending/receiving lists" );
324+ }
325+ } else {
326+ ArbiterColumnShard = locks.GetArbiterColumnShard ();
327+ AFL_VERIFY (ArbiterColumnShard);
328+ if (!ReceivingShards.contains (TabletId) && !SendingShards.contains (TabletId)) {
329+ return TConclusionStatus::Fail (" shard is incorrect for sending/receiving lists" );
330+ }
329331 }
330332 }
331333
0 commit comments