@@ -407,7 +407,7 @@ void TPartition::SyncMemoryStateWithKVState(const TActorContext& ctx) {
407
407
Head.PackedSize = 0 ;
408
408
Head.Offset = NewHead.Offset ;
409
409
Head.PartNo = NewHead.PartNo ; // no partNo at this point
410
- Head.Batches . clear ();
410
+ Head.ClearBatches ();
411
411
}
412
412
413
413
while (!CompactedKeys.empty ()) {
@@ -430,9 +430,8 @@ void TPartition::SyncMemoryStateWithKVState(const TActorContext& ctx) {
430
430
} // head cleared, all data moved to body
431
431
432
432
// append Head with newHead
433
- while (!NewHead.Batches .empty ()) {
434
- Head.Batches .push_back (NewHead.Batches .front ());
435
- NewHead.Batches .pop_front ();
433
+ while (!NewHead.GetBatches ().empty ()) {
434
+ Head.AddBatch (NewHead.ExtractFirstBatch ());
436
435
}
437
436
Head.PackedSize += NewHead.PackedSize ;
438
437
@@ -1326,22 +1325,22 @@ bool TPartition::ExecRequest(TWriteMsg& p, ProcessParameters& parameters, TEvKey
1326
1325
ctx);
1327
1326
ui32 countOfLastParts = 0 ;
1328
1327
for (auto & x : PartitionedBlob.GetClientBlobs ()) {
1329
- if (NewHead.Batches .empty () || NewHead.Batches . back ().Packed ) {
1330
- NewHead.Batches . emplace_back ( curOffset, x.GetPartNo (), TVector<TClientBlob>( ));
1328
+ if (NewHead.GetBatches () .empty () || NewHead.GetLastBatch ().Packed ) {
1329
+ NewHead.AddBatch ( TBatch ( curOffset, x.GetPartNo ()));
1331
1330
NewHead.PackedSize += GetMaxHeaderSize (); // upper bound for packed size
1332
1331
}
1333
1332
if (x.IsLastPart ()) {
1334
1333
++countOfLastParts;
1335
1334
}
1336
- Y_ABORT_UNLESS (!NewHead.Batches . back ().Packed );
1337
- NewHead.Batches . back (). AddBlob (x);
1335
+ Y_ABORT_UNLESS (!NewHead.GetLastBatch ().Packed );
1336
+ NewHead.AddBlob (x);
1338
1337
NewHead.PackedSize += x.GetBlobSize ();
1339
- if (NewHead.Batches . back ().GetUnpackedSize () >= BATCH_UNPACK_SIZE_BORDER) {
1340
- NewHead.Batches . back ().Pack ();
1341
- NewHead.PackedSize += NewHead.Batches . back ().GetPackedSize (); // add real packed size for this blob
1338
+ if (NewHead.GetLastBatch ().GetUnpackedSize () >= BATCH_UNPACK_SIZE_BORDER) {
1339
+ NewHead.MutableLastBatch ().Pack ();
1340
+ NewHead.PackedSize += NewHead.GetLastBatch ().GetPackedSize (); // add real packed size for this blob
1342
1341
1343
1342
NewHead.PackedSize -= GetMaxHeaderSize (); // instead of upper bound
1344
- NewHead.PackedSize -= NewHead.Batches . back ().GetUnpackedSize ();
1343
+ NewHead.PackedSize -= NewHead.GetLastBatch ().GetUnpackedSize ();
1345
1344
}
1346
1345
}
1347
1346
@@ -1418,15 +1417,15 @@ void TPartition::AddNewWriteBlob(std::pair<TKey, ui32>& res, TEvKeyValue::TEvReq
1418
1417
valueD.reserve (res.second );
1419
1418
ui32 pp = Head.FindPos (key.GetOffset (), key.GetPartNo ());
1420
1419
if (pp < Max<ui32>() && key.GetOffset () < EndOffset) { // this batch trully contains this offset
1421
- Y_ABORT_UNLESS (pp < Head.Batches .size ());
1422
- Y_ABORT_UNLESS (Head.Batches [pp] .GetOffset () == key.GetOffset ());
1423
- Y_ABORT_UNLESS (Head.Batches [pp] .GetPartNo () == key.GetPartNo ());
1424
- for (; pp < Head.Batches .size (); ++pp) { // TODO - merge small batches here
1425
- Y_ABORT_UNLESS (Head.Batches [pp] .Packed );
1426
- Head.Batches [pp] .SerializeTo (valueD);
1420
+ Y_ABORT_UNLESS (pp < Head.GetBatches () .size ());
1421
+ Y_ABORT_UNLESS (Head.GetBatch (pp) .GetOffset () == key.GetOffset ());
1422
+ Y_ABORT_UNLESS (Head.GetBatch (pp) .GetPartNo () == key.GetPartNo ());
1423
+ for (; pp < Head.GetBatches () .size (); ++pp) { // TODO - merge small batches here
1424
+ Y_ABORT_UNLESS (Head.GetBatch (pp) .Packed );
1425
+ Head.GetBatch (pp) .SerializeTo (valueD);
1427
1426
}
1428
1427
}
1429
- for (auto & b : NewHead.Batches ) {
1428
+ for (auto & b : NewHead.GetBatches () ) {
1430
1429
Y_ABORT_UNLESS (b.Packed );
1431
1430
b.SerializeTo (valueD);
1432
1431
}
@@ -1703,7 +1702,7 @@ void TPartition::BeginAppendHeadWithNewWrites(const TActorContext& ctx)
1703
1702
NewHead.PartNo = 0 ;
1704
1703
NewHead.PackedSize = 0 ;
1705
1704
1706
- Y_ABORT_UNLESS (NewHead.Batches .empty ());
1705
+ Y_ABORT_UNLESS (NewHead.GetBatches () .empty ());
1707
1706
1708
1707
Parameters->OldPartsCleared = false ;
1709
1708
Parameters->HeadCleared = (Head.PackedSize == 0 );
@@ -1748,12 +1747,12 @@ void TPartition::EndAppendHeadWithNewWrites(TEvKeyValue::TEvRequest* request, co
1748
1747
1749
1748
UpdateWriteBufferIsFullState (ctx.Now ());
1750
1749
1751
- if (!NewHead.Batches .empty () && !NewHead.Batches . back ().Packed ) {
1752
- NewHead.Batches . back ().Pack ();
1753
- NewHead.PackedSize += NewHead.Batches . back ().GetPackedSize (); // add real packed size for this blob
1750
+ if (!NewHead.GetBatches () .empty () && !NewHead.GetLastBatch ().Packed ) {
1751
+ NewHead.MutableLastBatch ().Pack ();
1752
+ NewHead.PackedSize += NewHead.GetLastBatch ().GetPackedSize (); // add real packed size for this blob
1754
1753
1755
1754
NewHead.PackedSize -= GetMaxHeaderSize (); // instead of upper bound
1756
- NewHead.PackedSize -= NewHead.Batches . back ().GetUnpackedSize ();
1755
+ NewHead.PackedSize -= NewHead.GetLastBatch ().GetUnpackedSize ();
1757
1756
}
1758
1757
1759
1758
Y_ABORT_UNLESS ((Parameters->HeadCleared ? 0 : Head.PackedSize ) + NewHead.PackedSize <= MaxBlobSize); // otherwise last PartitionedBlob.Add must compact all except last cl
0 commit comments