diff options
author | tea-mur <tea-mur@yandex-team.com> | 2025-05-28 10:25:03 +0300 |
---|---|---|
committer | tea-mur <tea-mur@yandex-team.com> | 2025-05-28 10:59:19 +0300 |
commit | a836d3b46fb5ab448b68b39871ee3edeb0444cca (patch) | |
tree | 42363dd63940e6eb6b81a6502feba88bc904210e | |
parent | 4b796727b1c97992a1fffcd1550bf226103fca59 (diff) | |
download | ydb-a836d3b46fb5ab448b68b39871ee3edeb0444cca.tar.gz |
YT-24315: Erasure validation management via dynconfig
commit_hash:e6cf3b6ed8c513d3b9088ce6aecd519528bfadce
-rw-r--r-- | yt/yt/client/api/config.cpp | 23 | ||||
-rw-r--r-- | yt/yt/client/api/config.h | 17 | ||||
-rw-r--r-- | yt/yt/client/api/public.h | 1 |
3 files changed, 41 insertions, 0 deletions
diff --git a/yt/yt/client/api/config.cpp b/yt/yt/client/api/config.cpp index ff1bb03903f..369d23d88dd 100644 --- a/yt/yt/client/api/config.cpp +++ b/yt/yt/client/api/config.cpp @@ -4,6 +4,8 @@ namespace NYT::NApi { +using namespace NYTree; + //////////////////////////////////////////////////////////////////////////////// void TTableMountCacheConfig::Register(TRegistrar registrar) @@ -132,6 +134,27 @@ void TJournalChunkWriterConfig::Register(TRegistrar registrar) //////////////////////////////////////////////////////////////////////////////// +void TDynamicJournalWriterConfig::Register(TRegistrar registrar) { + registrar.Parameter("validate_erasure_coding", &TThis::ValidateErasureCoding) + .Optional(); +} + +//////////////////////////////////////////////////////////////////////////////// + +TJournalWriterConfigPtr TJournalWriterConfig::ApplyDynamic( + const TDynamicJournalWriterConfigPtr& dynamicConfig) const +{ + auto config = CloneYsonStruct(MakeStrong(this)); + config->ApplyDynamicInplace(dynamicConfig); + config->Postprocess(); + return config; +} + +void TJournalWriterConfig::ApplyDynamicInplace(const TDynamicJournalWriterConfigPtr& dynamicConfig) +{ + UpdateYsonStructField(ValidateErasureCoding, dynamicConfig->ValidateErasureCoding); +} + void TJournalWriterConfig::Register(TRegistrar registrar) { registrar.Parameter("max_chunk_row_count", &TThis::MaxChunkRowCount) diff --git a/yt/yt/client/api/config.h b/yt/yt/client/api/config.h index 8666bdd7ac6..b5e0b44bd10 100644 --- a/yt/yt/client/api/config.h +++ b/yt/yt/client/api/config.h @@ -197,6 +197,20 @@ DEFINE_REFCOUNTED_TYPE(TJournalChunkWriterConfig) //////////////////////////////////////////////////////////////////////////////// +struct TDynamicJournalWriterConfig + : public virtual NYTree::TYsonStruct +{ + std::optional<bool> ValidateErasureCoding; + + REGISTER_YSON_STRUCT(TDynamicJournalWriterConfig); + + static void Register(TRegistrar registrar); +}; + +DEFINE_REFCOUNTED_TYPE(TDynamicJournalWriterConfig) + +//////////////////////////////////////////////////////////////////////////////// + struct TJournalWriterConfig : public TJournalChunkWriterConfig { @@ -219,6 +233,9 @@ struct TJournalWriterConfig std::optional<TDuration> OpenDelay; + TJournalWriterConfigPtr ApplyDynamic(const TDynamicJournalWriterConfigPtr& dynamicConfig) const; + void ApplyDynamicInplace(const TDynamicJournalWriterConfigPtr& dynamicConfig); + REGISTER_YSON_STRUCT(TJournalWriterConfig); static void Register(TRegistrar registrar); diff --git a/yt/yt/client/api/public.h b/yt/yt/client/api/public.h index ce8d0d7e4f3..45313f48a2c 100644 --- a/yt/yt/client/api/public.h +++ b/yt/yt/client/api/public.h @@ -174,6 +174,7 @@ DECLARE_REFCOUNTED_STRUCT(TJournalReaderConfig) DECLARE_REFCOUNTED_STRUCT(TJournalChunkWriterConfig) DECLARE_REFCOUNTED_STRUCT(TJournalWriterConfig) +DECLARE_REFCOUNTED_STRUCT(TDynamicJournalWriterConfig) DECLARE_REFCOUNTED_STRUCT(TJournalChunkWriterOptions) |