diff options
author | ivanmorozov <ivanmorozov@yandex-team.com> | 2023-09-21 22:51:31 +0300 |
---|---|---|
committer | ivanmorozov <ivanmorozov@yandex-team.com> | 2023-09-21 23:06:17 +0300 |
commit | 848bbaf910520e8e91552a9cc5ec81298c9786e8 (patch) | |
tree | 5c382bd15032168d6e8098b119f878872401828e | |
parent | f3dc09097cec50924ce6cbd5902110695a7ca522 (diff) | |
download | ydb-848bbaf910520e8e91552a9cc5ec81298c9786e8.tar.gz |
KIKIMR-19215: fix windows build
-rw-r--r-- | ydb/core/tx/columnshard/CMakeLists.windows-x86_64.txt | 1 | ||||
-rw-r--r-- | ydb/core/tx/columnshard/blobs_action/abstract/write.cpp | 2 | ||||
-rw-r--r-- | ydb/core/tx/columnshard/blobs_action/tier/storage.cpp | 24 | ||||
-rw-r--r-- | ydb/core/tx/columnshard/blobs_action/tier/storage.h | 9 | ||||
-rw-r--r-- | ydb/core/tx/columnshard/blobs_reader/task.cpp | 4 | ||||
-rw-r--r-- | ydb/core/tx/columnshard/blobs_reader/task.h | 4 | ||||
-rw-r--r-- | ydb/core/tx/columnshard/columnshard_impl.cpp | 24 | ||||
-rw-r--r-- | ydb/core/tx/columnshard/columnshard_impl.h | 4 | ||||
-rw-r--r-- | ydb/core/tx/columnshard/ya.make | 6 | ||||
-rw-r--r-- | ydb/core/tx/tiering/CMakeLists.windows-x86_64.txt | 6 | ||||
-rw-r--r-- | ydb/core/tx/tiering/manager.cpp | 31 | ||||
-rw-r--r-- | ydb/core/tx/tiering/manager.h | 17 | ||||
-rw-r--r-- | ydb/core/tx/tiering/ya.make | 6 |
13 files changed, 70 insertions, 68 deletions
diff --git a/ydb/core/tx/columnshard/CMakeLists.windows-x86_64.txt b/ydb/core/tx/columnshard/CMakeLists.windows-x86_64.txt index d3e1e8a7d0e..0b48bc68533 100644 --- a/ydb/core/tx/columnshard/CMakeLists.windows-x86_64.txt +++ b/ydb/core/tx/columnshard/CMakeLists.windows-x86_64.txt @@ -32,6 +32,7 @@ get_built_tool_path( add_library(core-tx-columnshard) target_compile_options(core-tx-columnshard PRIVATE + -DKIKIMR_DISABLE_S3_OPS -DUSE_CURRENT_UDF_ABI_VERSION ) target_link_libraries(core-tx-columnshard PUBLIC diff --git a/ydb/core/tx/columnshard/blobs_action/abstract/write.cpp b/ydb/core/tx/columnshard/blobs_action/abstract/write.cpp index 65d05cee02c..689e494c243 100644 --- a/ydb/core/tx/columnshard/blobs_action/abstract/write.cpp +++ b/ydb/core/tx/columnshard/blobs_action/abstract/write.cpp @@ -22,7 +22,7 @@ bool IBlobsWritingAction::IsReady() const { } IBlobsWritingAction::~IBlobsWritingAction() { - AFL_VERIFY(BlobsForWrite.empty() || Aborted); + AFL_VERIFY(!NActors::TlsActivationContext || BlobsForWrite.empty() || Aborted); } } diff --git a/ydb/core/tx/columnshard/blobs_action/tier/storage.cpp b/ydb/core/tx/columnshard/blobs_action/tier/storage.cpp index 3d6dec7bd66..d8c22aa4b9e 100644 --- a/ydb/core/tx/columnshard/blobs_action/tier/storage.cpp +++ b/ydb/core/tx/columnshard/blobs_action/tier/storage.cpp @@ -1,11 +1,12 @@ #include "storage.h" +#include "adapter.h" #include "remove.h" #include "write.h" #include "read.h" #include "gc.h" +#include "gc_actor.h" #include <ydb/core/tx/columnshard/columnshard_impl.h> #include <ydb/core/tx/tiering/manager.h> -#include "gc_actor.h" namespace NKikimr::NOlap::NBlobOperations::NTier { @@ -40,13 +41,23 @@ bool TOperator::DoStartGC() { return true; } -TOperator::TOperator(const TString& storageId, const NColumnShard::TColumnShard& shard, const std::shared_ptr<NWrappers::NExternalStorage::IExternalStorageOperator>& externalOperator) +void TOperator::InitNewExternalOperator(const NColumnShard::NTiers::TManager& tierManager) { + auto extStorageConfig = NWrappers::NExternalStorage::IExternalStorageConfig::Construct(tierManager.GetS3Settings()); + AFL_VERIFY(extStorageConfig); + auto extStorageOperator = extStorageConfig->ConstructStorageOperator(false); + extStorageOperator->InitReplyAdapter(std::make_shared<NOlap::NBlobOperations::NTier::TRepliesAdapter>()); + ExternalStorageOperators.emplace_back(extStorageOperator); + if (CurrentOperatorIdx.Val() + 1 < (i64)ExternalStorageOperators.size()) { + CurrentOperatorIdx.Inc(); + } +} + +TOperator::TOperator(const TString& storageId, const NColumnShard::TColumnShard& shard) : TBase(storageId) , TabletId(shard.TabletID()) , TabletActorId(shard.SelfId()) - , ExternalStorageOperators({externalOperator}) { - AFL_VERIFY(externalOperator); + InitNewExternalOperator(shard.GetTierManagerVerified(storageId)); } void TOperator::DoOnTieringModified(const std::shared_ptr<NColumnShard::TTiersManager>& tiers) { @@ -54,10 +65,7 @@ void TOperator::DoOnTieringModified(const std::shared_ptr<NColumnShard::TTiersMa auto* tierManager = tiers->GetManagerOptional(TBase::GetStorageId()); ui32 cleanCount = ExternalStorageOperators.size() - 1; if (tierManager) { - auto bOperator = tiers->GetManagerVerified(TBase::GetStorageId()).GetExternalStorageOperator(); - AFL_VERIFY(bOperator); - ExternalStorageOperators.emplace_back(bOperator); - CurrentOperatorIdx.Inc(); + InitNewExternalOperator(*tierManager); } else { cleanCount = ExternalStorageOperators.size(); } diff --git a/ydb/core/tx/columnshard/blobs_action/tier/storage.h b/ydb/core/tx/columnshard/blobs_action/tier/storage.h index 8587a6f5e4e..dcd3a77050e 100644 --- a/ydb/core/tx/columnshard/blobs_action/tier/storage.h +++ b/ydb/core/tx/columnshard/blobs_action/tier/storage.h @@ -3,6 +3,7 @@ #include <ydb/core/tx/columnshard/blobs_action/abstract/storage.h> #include <ydb/core/tx/columnshard/blob_manager.h> #include <ydb/core/tx/columnshard/blob_cache.h> +#include <ydb/core/tx/tiering/manager.h> #include <ydb/core/wrappers/abstract.h> #include "gc_info.h" @@ -16,7 +17,12 @@ private: TAtomicCounter CurrentOperatorIdx = 0; std::deque<NWrappers::NExternalStorage::IExternalStorageOperator::TPtr> ExternalStorageOperators; std::shared_ptr<TGCInfo> GCInfo = std::make_shared<TGCInfo>(); + NWrappers::NExternalStorage::IExternalStorageConfig::TPtr ExternalStorageConfig; + NWrappers::NExternalStorage::IExternalStorageOperator::TPtr ExternalStorageOperator; + NWrappers::NExternalStorage::IExternalStorageOperator::TPtr GetCurrentOperator() const; + void InitNewExternalOperator(const NColumnShard::NTiers::TManager& tierManager); + virtual TString DoDebugString() const override { return GetCurrentOperator()->DebugString(); } @@ -32,7 +38,8 @@ protected: virtual void DoOnTieringModified(const std::shared_ptr<NColumnShard::TTiersManager>& tiers) override; public: - TOperator(const TString& storageId, const NColumnShard::TColumnShard& shard, const std::shared_ptr<NWrappers::NExternalStorage::IExternalStorageOperator>& externalOperator); + TOperator(const TString& storageId, const NColumnShard::TColumnShard& shard); + virtual std::shared_ptr<IBlobInUseTracker> GetBlobsTracker() const override { return GCInfo; } diff --git a/ydb/core/tx/columnshard/blobs_reader/task.cpp b/ydb/core/tx/columnshard/blobs_reader/task.cpp index 20c7c3ec36e..38c7ebf627e 100644 --- a/ydb/core/tx/columnshard/blobs_reader/task.cpp +++ b/ydb/core/tx/columnshard/blobs_reader/task.cpp @@ -106,4 +106,8 @@ bool ITask::OnError(const TBlobRange& range) { return DoOnError(range); } +ITask::~ITask() { + Y_VERIFY(!NActors::TlsActivationContext || DataIsReadyFlag || TaskFinishedWithError); +} + } diff --git a/ydb/core/tx/columnshard/blobs_reader/task.h b/ydb/core/tx/columnshard/blobs_reader/task.h index a1706690d99..fb2a1a5bfcc 100644 --- a/ydb/core/tx/columnshard/blobs_reader/task.h +++ b/ydb/core/tx/columnshard/blobs_reader/task.h @@ -74,9 +74,7 @@ public: const std::vector<std::shared_ptr<IBlobsReadingAction>>& GetAgents() const; - virtual ~ITask() { - Y_VERIFY(DataIsReadyFlag || TaskFinishedWithError); - } + virtual ~ITask(); ITask(const std::vector<std::shared_ptr<IBlobsReadingAction>>& actions); diff --git a/ydb/core/tx/columnshard/columnshard_impl.cpp b/ydb/core/tx/columnshard/columnshard_impl.cpp index 1f450c58b25..127b9eda588 100644 --- a/ydb/core/tx/columnshard/columnshard_impl.cpp +++ b/ydb/core/tx/columnshard/columnshard_impl.cpp @@ -5,7 +5,11 @@ #include "engines/changes/ttl.h" #include "engines/changes/cleanup.h" #include "blobs_action/bs/storage.h" + +#ifndef KIKIMR_DISABLE_S3_OPS #include "blobs_action/tier/storage.h" +#endif + #include "blobs_action/transaction/tx_gc_insert_table.h" #include "blobs_action/transaction/tx_gc_indexed.h" #include "hooks/abstract/abstract.h" @@ -146,12 +150,11 @@ protected: } else if (!Shard->Tiers) { return nullptr; } else { - const NTiers::TManager* externalManager = Shard->Tiers->GetManagerOptional(storageId); - if (!externalManager) { - return nullptr; - } else { - return std::make_shared<NOlap::NBlobOperations::NTier::TOperator>(storageId, *Shard, externalManager->GetExternalStorageOperator()); - } +#ifndef KIKIMR_DISABLE_S3_OPS + return std::make_shared<NOlap::NBlobOperations::NTier::TOperator>(storageId, *Shard); +#else + return nullptr; +#endif } } public: @@ -915,15 +918,6 @@ void TColumnShard::Die(const TActorContext& ctx) { return IActor::Die(ctx); } -#ifndef KIKIMR_DISABLE_S3_OPS -NWrappers::NExternalStorage::IExternalStorageOperator::TPtr TColumnShard::GetTierStorageOperator(const TString& tierId) const { - if (!Tiers) { - return nullptr; - } - return Tiers->GetStorageOperator(tierId); -} -#endif - void TColumnShard::Handle(NMetadata::NProvider::TEvRefreshSubscriberData::TPtr& ev) { Y_VERIFY(Tiers); ALS_INFO(NKikimrServices::TX_COLUMNSHARD) << "test handle NMetadata::NProvider::TEvRefreshSubscriberData" diff --git a/ydb/core/tx/columnshard/columnshard_impl.h b/ydb/core/tx/columnshard/columnshard_impl.h index 2a0f1ca342b..2e1d6622e8f 100644 --- a/ydb/core/tx/columnshard/columnshard_impl.h +++ b/ydb/core/tx/columnshard/columnshard_impl.h @@ -460,10 +460,6 @@ private: void RunDropTable(const NKikimrTxColumnShard::TDropTable& body, const TRowVersion& version, NTabletFlatExecutor::TTransactionContext& txc); void RunAlterStore(const NKikimrTxColumnShard::TAlterStore& body, const TRowVersion& version, NTabletFlatExecutor::TTransactionContext& txc); -#ifndef KIKIMR_DISABLE_S3_OPS - NWrappers::NExternalStorage::IExternalStorageOperator::TPtr GetTierStorageOperator(const TString& tierId) const; -#endif - void SetupIndexation(); void SetupCompaction(); bool SetupTtl(const THashMap<ui64, NOlap::TTiering>& pathTtls = {}, const bool force = false); diff --git a/ydb/core/tx/columnshard/ya.make b/ydb/core/tx/columnshard/ya.make index 893c5663a61..ad4d31864a4 100644 --- a/ydb/core/tx/columnshard/ya.make +++ b/ydb/core/tx/columnshard/ya.make @@ -62,6 +62,12 @@ PEERDIR( ydb/library/chunks_limiter ) +IF (OS_WINDOWS) + CFLAGS( + -DKIKIMR_DISABLE_S3_OPS + ) +ENDIF() + YQL_LAST_ABI_VERSION() END() diff --git a/ydb/core/tx/tiering/CMakeLists.windows-x86_64.txt b/ydb/core/tx/tiering/CMakeLists.windows-x86_64.txt index 1ff88e527d0..9184b283a62 100644 --- a/ydb/core/tx/tiering/CMakeLists.windows-x86_64.txt +++ b/ydb/core/tx/tiering/CMakeLists.windows-x86_64.txt @@ -11,6 +11,9 @@ add_subdirectory(tier) add_subdirectory(ut) add_library(core-tx-tiering) +target_compile_options(core-tx-tiering PRIVATE + -DKIKIMR_DISABLE_S3_OPS +) target_link_libraries(core-tx-tiering PUBLIC contrib-libs-cxxsupp yutil @@ -35,6 +38,9 @@ target_sources(core-tx-tiering PRIVATE ) add_global_library_for(core-tx-tiering.global core-tx-tiering) +target_compile_options(core-tx-tiering.global PRIVATE + -DKIKIMR_DISABLE_S3_OPS +) target_link_libraries(core-tx-tiering.global PUBLIC contrib-libs-cxxsupp yutil diff --git a/ydb/core/tx/tiering/manager.cpp b/ydb/core/tx/tiering/manager.cpp index d5adbd1308a..b0b4c0f90e3 100644 --- a/ydb/core/tx/tiering/manager.cpp +++ b/ydb/core/tx/tiering/manager.cpp @@ -3,7 +3,6 @@ #include "external_data.h" #include <ydb/core/tx/columnshard/columnshard_private_events.h> -#include <ydb/core/tx/columnshard/blobs_action/tier/adapter.h> #include <ydb/services/metadata/secret/fetcher.h> namespace NKikimr::NColumnShard { @@ -85,23 +84,14 @@ TManager& TManager::Restart(const TTierConfig& config, std::shared_ptr<NMetadata } bool TManager::Stop() { - ExternalStorageOperator = nullptr; - ExternalStorageConfig = nullptr; + S3Settings.reset(); ALS_DEBUG(NKikimrServices::TX_TIERING) << "Tier '" << GetTierName() << "' stopped at tablet " << TabletId; return true; } bool TManager::Start(std::shared_ptr<NMetadata::NSecret::TSnapshot> secrets) { - if (!!ExternalStorageOperator) { - ALS_DEBUG(NKikimrServices::TX_TIERING) << "Tier '" << GetTierName() << "' is already started at tablet " << TabletId; - return true; - } -#ifndef KIKIMR_DISABLE_S3_OPS - auto s3Config = Config.GetPatchedConfig(secrets); - ExternalStorageConfig = NWrappers::NExternalStorage::IExternalStorageConfig::Construct(s3Config); - ExternalStorageOperator = ExternalStorageConfig->ConstructStorageOperator(false); - ExternalStorageOperator->InitReplyAdapter(std::make_shared<NOlap::NBlobOperations::NTier::TRepliesAdapter>()); -#endif + AFL_VERIFY(!S3Settings)("tier", GetTierName())("event", "already started"); + S3Settings = Config.GetPatchedConfig(secrets); ALS_DEBUG(NKikimrServices::TX_TIERING) << "Tier '" << GetTierName() << "' started at tablet " << TabletId; return true; } @@ -147,8 +137,8 @@ void TTiersManager::TakeConfigs(NMetadata::NFetcher::ISnapshot::TPtr snapshotExt continue; } NTiers::TManager localManager(TabletId, TabletActorId, i.second); - auto& manager = Managers.emplace(tierName, std::move(localManager)).first->second; - manager.Start(Secrets); + auto itManager = Managers.emplace(tierName, std::move(localManager)).first; + itManager->second.Start(Secrets); } if (ShardCallback && TlsActivationContext) { @@ -156,17 +146,6 @@ void TTiersManager::TakeConfigs(NMetadata::NFetcher::ISnapshot::TPtr snapshotExt } } -#ifndef KIKIMR_DISABLE_S3_OPS -NWrappers::NExternalStorage::IExternalStorageOperator::TPtr TTiersManager::GetStorageOperator(const TString& tierId) const { - auto it = Managers.find(tierId); - if (it == Managers.end()) { - ALS_ERROR(NKikimrServices::TX_TIERING) << "No storage operator for tier '" << tierId << "' at tablet " << TabletId; - return nullptr; - } - return it->second.GetExternalStorageOperator(); -} -#endif - TTiersManager& TTiersManager::Start(std::shared_ptr<TTiersManager> ownerPtr) { Y_VERIFY(!Actor); Actor = new TTiersManager::TActor(ownerPtr); diff --git a/ydb/core/tx/tiering/manager.h b/ydb/core/tx/tiering/manager.h index 282da3b2726..415ab3f1705 100644 --- a/ydb/core/tx/tiering/manager.h +++ b/ydb/core/tx/tiering/manager.h @@ -6,13 +6,11 @@ #include <library/cpp/actors/core/actor_bootstrapped.h> #include <library/cpp/actors/core/actor.h> +#include <ydb/public/sdk/cpp/client/ydb_types/s3_settings.h> #include <ydb/services/metadata/secret/snapshot.h> #include <ydb/services/metadata/service.h> #include <ydb/library/accessor/accessor.h> -#ifndef KIKIMR_DISABLE_S3_OPS -#include <ydb/core/wrappers/abstract.h> -#endif namespace NKikimr::NColumnShard { namespace NTiers { @@ -25,11 +23,13 @@ private: YDB_READONLY_DEF(NActors::TActorId, TabletActorId); YDB_READONLY_DEF(TTierConfig, Config); YDB_READONLY_DEF(NActors::TActorId, StorageActorId); -#ifndef KIKIMR_DISABLE_S3_OPS - NWrappers::NExternalStorage::IExternalStorageConfig::TPtr ExternalStorageConfig; - YDB_READONLY_DEF(NWrappers::NExternalStorage::IExternalStorageOperator::TPtr, ExternalStorageOperator); -#endif + std::optional<NKikimrSchemeOp::TS3Settings> S3Settings; public: + const NKikimrSchemeOp::TS3Settings& GetS3Settings() const { + Y_VERIFY(S3Settings); + return *S3Settings; + } + TManager(const ui64 tabletId, const NActors::TActorId& tabletActorId, const TTierConfig& config); TManager& Restart(const TTierConfig& config, std::shared_ptr<NMetadata::NSecret::TSnapshot> secrets); @@ -81,9 +81,6 @@ public: TTiersManager& Start(std::shared_ptr<TTiersManager> ownerPtr); TTiersManager& Stop(); -#ifndef KIKIMR_DISABLE_S3_OPS - NWrappers::NExternalStorage::IExternalStorageOperator::TPtr GetStorageOperator(const TString& tierId) const; -#endif const NTiers::TManager& GetManagerVerified(const TString & tierId) const; const NTiers::TManager* GetManagerOptional(const TString& tierId) const; NMetadata::NFetcher::ISnapshotsFetcher::TPtr GetExternalDataManipulation() const; diff --git a/ydb/core/tx/tiering/ya.make b/ydb/core/tx/tiering/ya.make index 42c40a3c246..1a77b742096 100644 --- a/ydb/core/tx/tiering/ya.make +++ b/ydb/core/tx/tiering/ya.make @@ -10,6 +10,12 @@ SRCS( snapshot.cpp ) +IF (OS_WINDOWS) + CFLAGS( + -DKIKIMR_DISABLE_S3_OPS + ) +ENDIF() + PEERDIR( library/cpp/actors/core library/cpp/json/writer |