@@ -592,7 +592,9 @@ class TChangesReadTask: public NOlap::NBlobOperations::NRead::ITask {
592
592
}
593
593
TxEvent->IndexChanges ->Blobs = ExtractBlobsData ();
594
594
const bool isInsert = !!dynamic_pointer_cast<NOlap::TInsertColumnEngineChanges>(TxEvent->IndexChanges );
595
- std::shared_ptr<NConveyor::ITask> task = std::make_shared<TChangesTask>(std::move (TxEvent), Counters, TabletId, ParentActorId, LastCompletedTx);
595
+ TxEvent->IndexChanges ->SetStage (NOlap::NChanges::EStage::ReadyForConstruct);
596
+ std::shared_ptr<NConveyor::ITask> task =
597
+ std::make_shared<TChangesTask>(std::move (TxEvent), Counters, TabletId, ParentActorId, LastCompletedTx);
596
598
if (isInsert) {
597
599
NConveyor::TInsertServiceOperator::SendTaskToExecute (task);
598
600
} else {
@@ -849,21 +851,27 @@ void TColumnShard::SetupCompaction(const std::set<TInternalPathId>& pathIds) {
849
851
class TAccessorsMemorySubscriber : public NOlap ::NResourceBroker::NSubscribe::ITask {
850
852
private:
851
853
using TBase = NOlap::NResourceBroker::NSubscribe::ITask;
854
+ std::shared_ptr<NOlap::TColumnEngineChanges> ChangeTask;
852
855
std::shared_ptr<NOlap::TDataAccessorsRequest> Request;
853
856
std::shared_ptr<TDataAccessorsSubscriberBase> Subscriber;
854
857
std::shared_ptr<NOlap::NDataAccessorControl::IDataAccessorsManager> DataAccessorsManager;
855
858
856
859
virtual void DoOnAllocationSuccess (const std::shared_ptr<NOlap::NResourceBroker::NSubscribe::TResourcesGuard>& guard) override {
857
860
Subscriber->SetResourcesGuard (guard);
858
861
Request->RegisterSubscriber (Subscriber);
862
+ if (ChangeTask) {
863
+ ChangeTask->SetStage (NOlap::NChanges::EStage::AskAccessors);
864
+ }
859
865
DataAccessorsManager->AskData (Request);
860
866
}
861
867
862
868
public:
863
869
TAccessorsMemorySubscriber (const ui64 memory, const TString& externalTaskId, const NOlap::NResourceBroker::NSubscribe::TTaskContext& context,
864
870
std::shared_ptr<NOlap::TDataAccessorsRequest>&& request, const std::shared_ptr<TDataAccessorsSubscriberBase>& subscriber,
865
- const std::shared_ptr<NOlap::NDataAccessorControl::IDataAccessorsManager>& dataAccessorsManager)
871
+ const std::shared_ptr<NOlap::NDataAccessorControl::IDataAccessorsManager>& dataAccessorsManager,
872
+ const std::shared_ptr<NOlap::TColumnEngineChanges>& changeTask)
866
873
: TBase(0 , memory, externalTaskId, context)
874
+ , ChangeTask(changeTask)
867
875
, Request(std::move(request))
868
876
, Subscriber(subscriber)
869
877
, DataAccessorsManager(dataAccessorsManager) {
@@ -879,6 +887,7 @@ class TCompactionDataAccessorsSubscriber: public TDataAccessorsSubscriberWithRea
879
887
const TString externalTaskId = Changes->GetTaskIdentifier ();
880
888
AFL_DEBUG (NKikimrServices::TX_COLUMNSHARD)(" event" , " compaction" )(" external_task_id" , externalTaskId);
881
889
890
+ Changes->SetStage (NOlap::NChanges::EStage::ReadBlobs);
882
891
auto ev = std::make_unique<TEvPrivate::TEvWriteIndex>(VersionedIndex, Changes, CacheDataAfterWrite);
883
892
TActorContext::AsActorContext ().Register (new NOlap::NBlobOperations::NRead::TActor (
884
893
std::make_shared<TCompactChangesReadTask>(std::move (ev), ShardActorId, ShardTabletId, Counters, SnapshotModification)));
@@ -898,21 +907,23 @@ void TColumnShard::StartCompaction(const std::shared_ptr<NPrioritiesQueue::TAllo
898
907
return ;
899
908
}
900
909
901
- auto compaction = dynamic_pointer_cast <NOlap::NCompaction::TGeneralCompactColumnEngineChanges>(indexChanges);
902
- compaction-> SetActivityFlag (GetTabletActivity ());
903
- compaction-> SetQueueGuard (guard);
904
- compaction-> Start (*this );
910
+ auto & compaction = *VerifyDynamicCast <NOlap::NCompaction::TGeneralCompactColumnEngineChanges* >(indexChanges. get () );
911
+ compaction. SetActivityFlag (GetTabletActivity ());
912
+ compaction. SetQueueGuard (guard);
913
+ compaction. Start (*this );
905
914
906
915
auto actualIndexInfo = TablesManager.GetPrimaryIndex ()->GetVersionedIndexReadonlyCopy ();
907
- auto request = compaction-> ExtractDataAccessorsRequest ();
916
+ auto request = compaction. ExtractDataAccessorsRequest ();
908
917
const ui64 accessorsMemory = request->PredictAccessorsMemory (TablesManager.GetPrimaryIndex ()->GetVersionedIndex ().GetLastSchema ()) +
909
918
indexChanges->CalcMemoryForUsage ();
910
919
const auto subscriber = std::make_shared<TCompactionDataAccessorsSubscriber>(ResourceSubscribeActor, indexChanges, actualIndexInfo,
911
920
Settings.CacheDataAfterCompaction , SelfId (), TabletID (), Counters.GetCompactionCounters (), GetLastCompletedTx (),
912
921
CompactTaskSubscription);
913
- NOlap::NResourceBroker::NSubscribe::ITask::StartResourceSubscription (
914
- ResourceSubscribeActor, std::make_shared<TAccessorsMemorySubscriber>(accessorsMemory, indexChanges->GetTaskIdentifier (),
915
- CompactTaskSubscription, std::move(request), subscriber, DataAccessorsManager.GetObjectPtrVerified()));
922
+ compaction.SetStage (NOlap::NChanges::EStage::AskResources);
923
+ NOlap::NResourceBroker::NSubscribe::ITask::StartResourceSubscription (ResourceSubscribeActor,
924
+ std::make_shared<TAccessorsMemorySubscriber>(accessorsMemory, indexChanges->GetTaskIdentifier (), CompactTaskSubscription,
925
+ std::move(request),
926
+ subscriber, DataAccessorsManager.GetObjectPtrVerified(), indexChanges));
916
927
}
917
928
918
929
class TWriteEvictPortionsDataAccessorsSubscriber : public TDataAccessorsSubscriberWithRead {
@@ -981,7 +992,7 @@ void TColumnShard::SetupMetadata() {
981
992
NOlap::NResourceBroker::NSubscribe::ITask::StartResourceSubscription (ResourceSubscribeActor,
982
993
std::make_shared<TAccessorsMemorySubscriber>(accessorsMemory, i.GetRequest()->GetTaskId(), TTLTaskSubscription,
983
994
std::shared_ptr<NOlap::TDataAccessorsRequest>(i.GetRequest()),
984
- std::make_shared<TCSMetadataSubscriber>(SelfId(), i.GetProcessor(), Generation()), DataAccessorsManager.GetObjectPtrVerified()));
995
+ std::make_shared<TCSMetadataSubscriber>(SelfId(), i.GetProcessor(), Generation()), DataAccessorsManager.GetObjectPtrVerified(), nullptr ));
985
996
}
986
997
}
987
998
@@ -1020,7 +1031,7 @@ bool TColumnShard::SetupTtl() {
1020
1031
request->PredictAccessorsMemory (TablesManager.GetPrimaryIndex ()->GetVersionedIndex ().GetLastSchema ()) + memoryUsage;
1021
1032
NOlap::NResourceBroker::NSubscribe::ITask::StartResourceSubscription (
1022
1033
ResourceSubscribeActor, std::make_shared<TAccessorsMemorySubscriber>(accessorsMemory, i->GetTaskIdentifier (), TTLTaskSubscription,
1023
- std::move(request), subscriber, DataAccessorsManager.GetObjectPtrVerified()));
1034
+ std::move(request), subscriber, DataAccessorsManager.GetObjectPtrVerified(), i ));
1024
1035
}
1025
1036
return true ;
1026
1037
}
@@ -1069,7 +1080,7 @@ void TColumnShard::SetupCleanupPortions() {
1069
1080
1070
1081
NOlap::NResourceBroker::NSubscribe::ITask::StartResourceSubscription (
1071
1082
ResourceSubscribeActor, std::make_shared<TAccessorsMemorySubscriber>(accessorsMemory, changes->GetTaskIdentifier (), TTLTaskSubscription,
1072
- std::move(request), subscriber, DataAccessorsManager.GetObjectPtrVerified()));
1083
+ std::move(request), subscriber, DataAccessorsManager.GetObjectPtrVerified(), changes ));
1073
1084
}
1074
1085
1075
1086
void TColumnShard::SetupCleanupTables () {
0 commit comments