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