Skip to content

Commit e6ea5a7

Browse files
authored
write fix (#19938)
2 parents 7a0f1b7 + 593b170 commit e6ea5a7

File tree

3 files changed

+9
-6
lines changed

3 files changed

+9
-6
lines changed

ydb/core/tx/columnshard/blobs_action/transaction/tx_blobs_written.cpp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,7 @@ bool TTxBlobsWritingFinished::DoExecute(TTransactionContext& txc, const TActorCo
3636
AFL_VERIFY(portion.GetPortionInfoConstructor()->GetPortionConstructor().GetType() == NOlap::EPortionType::Written);
3737
auto* constructor =
3838
static_cast<NOlap::TWrittenPortionInfoConstructor*>(&portion.GetPortionInfoConstructor()->MutablePortionConstructor());
39-
if (PackBehaviour == EOperationBehaviour::NoTxWrite) {
40-
static TAtomicCounter Counter = 0;
41-
constructor->SetInsertWriteId((TInsertWriteId)Counter.Inc());
42-
} else {
43-
constructor->SetInsertWriteId(Self->InsertTable->BuildNextWriteId(txc));
44-
}
39+
constructor->SetInsertWriteId(granule.BuildNextInsertWriteId());
4540
InsertWriteIds.emplace_back(constructor->GetInsertWriteIdVerified());
4641
portion.Finalize(Self, txc);
4742
if (PackBehaviour == EOperationBehaviour::NoTxWrite) {

ydb/core/tx/columnshard/engines/storage/granule/granule.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,9 @@ void TGranuleMeta::UpsertPortionOnLoad(const std::shared_ptr<TPortionInfo>& port
151151
if (!portion->IsCommitted()) {
152152
const std::shared_ptr<TWrittenPortionInfo> portionImpl = std::static_pointer_cast<TWrittenPortionInfo>(portion);
153153
const TInsertWriteId insertWriteId = portionImpl->GetInsertWriteId();
154+
if (AtomicGet(LastInsertWriteId) < (i64)portionImpl->GetInsertWriteId()) {
155+
AtomicSet(LastInsertWriteId, (i64)portionImpl->GetInsertWriteId());
156+
}
154157
AFL_VERIFY(InsertedPortions.emplace(insertWriteId, portionImpl).second);
155158
AFL_VERIFY(!Portions.contains(portionImpl->GetPortionId()));
156159
} else {

ydb/core/tx/columnshard/engines/storage/granule/granule.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ class TGranuleMeta: TNonCopyable {
119119
private:
120120
TMonotonic ModificationLastTime = TMonotonic::Now();
121121
THashMap<ui64, std::shared_ptr<TPortionInfo>> Portions;
122+
TAtomic LastInsertWriteId = 1;
122123
THashMap<TInsertWriteId, std::shared_ptr<TWrittenPortionInfo>> InsertedPortions;
123124
THashMap<TInsertWriteId, TPortionDataAccessor> InsertedAccessors;
124125
mutable std::optional<TGranuleAdditiveSummary> AdditiveSummaryCache;
@@ -167,6 +168,10 @@ class TGranuleMeta: TNonCopyable {
167168
return ActualizationIndex->CollectMetadataRequests(Portions);
168169
}
169170

171+
TInsertWriteId BuildNextInsertWriteId() {
172+
return (TInsertWriteId)AtomicIncrement(LastInsertWriteId);
173+
}
174+
170175
const NStorageOptimizer::IOptimizerPlanner& GetOptimizerPlanner() const {
171176
return *OptimizerPlanner;
172177
}

0 commit comments

Comments
 (0)