Skip to content

Commit

Permalink
correct change tasks validation (ydb-platform#13064)
Browse files Browse the repository at this point in the history
  • Loading branch information
ivanmorozov333 authored Dec 28, 2024
1 parent 03f9a13 commit ba06b7b
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 3 deletions.
1 change: 0 additions & 1 deletion ydb/core/tx/columnshard/columnshard.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,6 @@ void TColumnShard::TrySwitchToWork(const TActorContext& ctx) {
AFL_INFO(NKikimrServices::TX_COLUMNSHARD)("event", "skip_switch_to_work")("reason", "db_reading_not_finished");
return;
}

ProgressTxController->OnTabletInit();
{
const TLogContextGuard gLogging =
Expand Down
5 changes: 4 additions & 1 deletion ydb/core/tx/columnshard/columnshard_impl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ TColumnShard::TColumnShard(TTabletStorageInfo* info, const TActorId& tablet)
, BackgroundController(Counters.GetBackgroundControllerCounters())
, NormalizerController(StoragesManager, Counters.GetSubscribeCounters())
, SysLocks(this) {
AFL_VERIFY(TabletActivityImpl->Inc() == 1);
}

void TColumnShard::OnDetach(const TActorContext& ctx) {
Expand Down Expand Up @@ -895,6 +896,7 @@ void TColumnShard::StartCompaction(const std::shared_ptr<NPrioritiesQueue::TAllo
}

auto compaction = dynamic_pointer_cast<NOlap::NCompaction::TGeneralCompactColumnEngineChanges>(indexChanges);
compaction->SetActivityFlag(GetTabletActivity());
compaction->SetQueueGuard(guard);
compaction->Start(*this);

Expand Down Expand Up @@ -1148,11 +1150,12 @@ void TColumnShard::SetupCleanupInsertTable() {
}

void TColumnShard::Die(const TActorContext& ctx) {
AFL_VERIFY(TabletActivityImpl->Dec() == 0);
CleanupActors(ctx);
NTabletPipe::CloseAndForgetClient(SelfId(), StatsReportPipe);
UnregisterMediatorTimeCast();
NYDBTest::TControllers::GetColumnShardController()->OnTabletStopped(*this);
return IActor::Die(ctx);
IActor::Die(ctx);
}

void TColumnShard::Handle(NActors::TEvents::TEvUndelivered::TPtr& ev, const TActorContext&) {
Expand Down
6 changes: 6 additions & 0 deletions ydb/core/tx/columnshard/columnshard_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -326,6 +326,8 @@ class TColumnShard: public TActor<TColumnShard>, public NTabletFlatExecutor::TTa
void ActivateTiering(const ui64 pathId, const THashSet<TString>& usedTiers);
void OnTieringModified(const std::optional<ui64> pathId = {});

std::shared_ptr<TAtomicCounter> TabletActivityImpl = std::make_shared<TAtomicCounter>(0);

public:
ui64 BuildEphemeralTxId() {
static TAtomicCounter Counter = 0;
Expand Down Expand Up @@ -602,6 +604,10 @@ class TColumnShard: public TActor<TColumnShard>, public NTabletFlatExecutor::TTa
public:
ui64 TabletTxCounter = 0;

std::shared_ptr<const TAtomicCounter> GetTabletActivity() const {
return TabletActivityImpl;
}

const TTablesManager& GetTablesManager() const {
return TablesManager;
}
Expand Down
10 changes: 10 additions & 0 deletions ydb/core/tx/columnshard/engines/changes/abstract/abstract.h
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,7 @@ class TColumnEngineChanges {
std::shared_ptr<NDataLocks::TManager::TGuard> LockGuard;
TString AbortedReason;
const TString TaskIdentifier = TGUID::CreateTimebased().AsGuidString();
std::shared_ptr<const TAtomicCounter> ActivityFlag;

protected:
std::optional<TDataAccessorsResult> FetchedDataAccessors;
Expand Down Expand Up @@ -246,6 +247,15 @@ class TColumnEngineChanges {
virtual void OnDataAccessorsInitialized(const TDataAccessorsInitializationContext& context) = 0;

public:
bool IsActive() const {
return !ActivityFlag || ActivityFlag->Val();
}

void SetActivityFlag(const std::shared_ptr<const TAtomicCounter>& flag) {
AFL_VERIFY(!ActivityFlag);
ActivityFlag = flag;
}

std::shared_ptr<TDataAccessorsRequest> ExtractDataAccessorsRequest() const {
AFL_VERIFY(!!PortionsToAccess);
return std::move(PortionsToAccess);
Expand Down
2 changes: 1 addition & 1 deletion ydb/core/tx/columnshard/engines/changes/compaction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ TCompactColumnEngineChanges::TCompactColumnEngineChanges(
}

TCompactColumnEngineChanges::~TCompactColumnEngineChanges() {
Y_DEBUG_ABORT_UNLESS(!NActors::TlsActivationContext || !NeedGranuleStatusProvide);
Y_DEBUG_ABORT_UNLESS(!NActors::TlsActivationContext || !NeedGranuleStatusProvide || !IsActive());
}

} // namespace NKikimr::NOlap

0 comments on commit ba06b7b

Please sign in to comment.