@@ -978,8 +978,7 @@ TWriteSessionImpl::TProcessSrvMessageResult TWriteSessionImpl::ProcessServerMess
978
978
FirstTokenSent = true ;
979
979
}
980
980
// Kickstart send after session reestablishment
981
- FormGrpcMessagesImpl ();
982
- SendGrpcMessages ();
981
+ SendImpl ();
983
982
break ;
984
983
}
985
984
case TServerMessage::kWriteResponse : {
@@ -1167,14 +1166,12 @@ void TWriteSessionImpl::CompressImpl(TBlock&& block_) {
1167
1166
1168
1167
void TWriteSessionImpl::OnCompressed (TBlock&& block, bool isSyncCompression) {
1169
1168
TMemoryUsageChange memoryUsage;
1170
- if (isSyncCompression) {
1171
- // The Lock is already held somewhere up the stack.
1169
+ if (! isSyncCompression) {
1170
+ std::lock_guard guard ( Lock);
1172
1171
memoryUsage = OnCompressedImpl (std::move (block));
1173
1172
} else {
1174
- std::lock_guard guard (Lock);
1175
1173
memoryUsage = OnCompressedImpl (std::move (block));
1176
1174
}
1177
- SendGrpcMessages ();
1178
1175
if (memoryUsage.NowOk && !memoryUsage.WasOk ) {
1179
1176
EventsQueue->PushEvent (TWriteSessionEvent::TReadyToAcceptEvent{IssueContinuationToken ()});
1180
1177
}
@@ -1190,7 +1187,7 @@ TMemoryUsageChange TWriteSessionImpl::OnCompressedImpl(TBlock&& block) {
1190
1187
(*Counters->BytesInflightCompressed ) += block.Data .size ();
1191
1188
1192
1189
PackedMessagesToSend.emplace (std::move (block));
1193
- FormGrpcMessagesImpl ();
1190
+ SendImpl ();
1194
1191
return memoryUsage;
1195
1192
}
1196
1193
@@ -1307,7 +1304,7 @@ size_t TWriteSessionImpl::WriteBatchImpl() {
1307
1304
}
1308
1305
CurrentBatch.Reset ();
1309
1306
if (skipCompression) {
1310
- FormGrpcMessagesImpl ();
1307
+ SendImpl ();
1311
1308
}
1312
1309
return size;
1313
1310
}
@@ -1371,16 +1368,7 @@ bool TWriteSessionImpl::TxIsChanged(const Ydb::Topic::StreamWriteMessage_WriteRe
1371
1368
return GetTransactionId (*writeRequest) != GetTransactionId (OriginalMessagesToSend.front ().Tx );
1372
1369
}
1373
1370
1374
- void TWriteSessionImpl::SendGrpcMessages () {
1375
- with_lock (ProcessorLock) {
1376
- TClientMessage message;
1377
- while (GrpcMessagesToSend.Dequeue (&message)) {
1378
- Processor->Write (std::move (message));
1379
- }
1380
- }
1381
- }
1382
-
1383
- void TWriteSessionImpl::FormGrpcMessagesImpl () {
1371
+ void TWriteSessionImpl::SendImpl () {
1384
1372
Y_ABORT_UNLESS (Lock.IsLocked ());
1385
1373
1386
1374
// External cycle splits ready blocks into multiple gRPC messages. Current gRPC message size hard limit is 64MiB.
@@ -1451,7 +1439,7 @@ void TWriteSessionImpl::FormGrpcMessagesImpl() {
1451
1439
<< OriginalMessagesToSend.size () << " left), first sequence number is "
1452
1440
<< writeRequest->messages (0 ).seq_no ()
1453
1441
);
1454
- GrpcMessagesToSend. Enqueue (std::move (clientMessage));
1442
+ Processor-> Write (std::move (clientMessage));
1455
1443
}
1456
1444
}
1457
1445
@@ -1513,10 +1501,8 @@ void TWriteSessionImpl::HandleWakeUpImpl() {
1513
1501
return ;
1514
1502
}
1515
1503
if (auto self = cbContext->LockShared ()) {
1516
- with_lock (self->Lock ) {
1517
- self->HandleWakeUpImpl ();
1518
- }
1519
- self->SendGrpcMessages ();
1504
+ std::lock_guard guard (self->Lock );
1505
+ self->HandleWakeUpImpl ();
1520
1506
}
1521
1507
};
1522
1508
if (TInstant::Now () - LastTokenUpdate > UPDATE_TOKEN_PERIOD) {
0 commit comments