aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortea-mur <tea-mur@yandex-team.com>2025-05-28 10:25:03 +0300
committertea-mur <tea-mur@yandex-team.com>2025-05-28 10:59:19 +0300
commita836d3b46fb5ab448b68b39871ee3edeb0444cca (patch)
tree42363dd63940e6eb6b81a6502feba88bc904210e
parent4b796727b1c97992a1fffcd1550bf226103fca59 (diff)
downloadydb-a836d3b46fb5ab448b68b39871ee3edeb0444cca.tar.gz
YT-24315: Erasure validation management via dynconfig
commit_hash:e6cf3b6ed8c513d3b9088ce6aecd519528bfadce
-rw-r--r--yt/yt/client/api/config.cpp23
-rw-r--r--yt/yt/client/api/config.h17
-rw-r--r--yt/yt/client/api/public.h1
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)