11
11
namespace NKikimr ::NOlap::NBlobOperations::NTier {
12
12
13
13
NWrappers::NExternalStorage::IExternalStorageOperator::TPtr TOperator::GetCurrentOperator () const {
14
- const ui32 idx = CurrentOperatorIdx.Val ();
15
- AFL_VERIFY (idx < ExternalStorageOperators.size ())(" idx" , idx)(" size" , ExternalStorageOperators.size ());
16
- auto result = ExternalStorageOperators[idx];
17
- Y_ABORT_UNLESS (result);
18
- return result;
14
+ TGuard<TSpinLock> changeLock (ChangeOperatorLock);
15
+ return ExternalStorageOperator;
19
16
}
20
17
21
18
std::shared_ptr<IBlobsDeclareRemovingAction> TOperator::DoStartDeclareRemovingAction () {
@@ -52,10 +49,8 @@ void TOperator::InitNewExternalOperator(const NColumnShard::NTiers::TManager* ti
52
49
AFL_VERIFY (extStorageConfig);
53
50
auto extStorageOperator = extStorageConfig->ConstructStorageOperator (false );
54
51
extStorageOperator->InitReplyAdapter (std::make_shared<NOlap::NBlobOperations::NTier::TRepliesAdapter>());
55
- ExternalStorageOperators.emplace_back (extStorageOperator);
56
- if (CurrentOperatorIdx.Val () + 1 < (i64)ExternalStorageOperators.size ()) {
57
- CurrentOperatorIdx.Inc ();
58
- }
52
+ TGuard<TSpinLock> changeLock (ChangeOperatorLock);
53
+ ExternalStorageOperator = extStorageOperator;
59
54
}
60
55
61
56
TOperator::TOperator (const TString& storageId, const NColumnShard::TColumnShard& shard)
@@ -67,20 +62,12 @@ TOperator::TOperator(const TString& storageId, const NColumnShard::TColumnShard&
67
62
}
68
63
69
64
void TOperator::DoOnTieringModified (const std::shared_ptr<NColumnShard::TTiersManager>& tiers) {
70
- AFL_VERIFY (ExternalStorageOperators.size ());
71
65
auto * tierManager = tiers->GetManagerOptional (TBase::GetStorageId ());
72
- ui32 cleanCount = ExternalStorageOperators.size () - 1 ;
73
66
if (tierManager) {
74
67
InitNewExternalOperator (tierManager);
75
68
} else {
76
- cleanCount = ExternalStorageOperators.size ();
77
- }
78
- for (ui32 i = 0 ; i < cleanCount; ++i) {
79
- if (ExternalStorageOperators[i].use_count () == 1 ) {
80
- ExternalStorageOperators[i] = nullptr ;
81
- } else {
82
- break ;
83
- }
69
+ TGuard<TSpinLock> changeLock (ChangeOperatorLock);
70
+ ExternalStorageOperator = nullptr ;
84
71
}
85
72
}
86
73
0 commit comments