Make pipeline policy/topology configurable
This commit is contained in:
@@ -126,6 +126,25 @@ void ConfigParser::parse_commit_config(const auto &toml_data,
|
||||
config.request_id_retention_hours);
|
||||
parse_field(commit, "request_id_retention_versions",
|
||||
config.request_id_retention_versions);
|
||||
|
||||
// Parse wait strategy
|
||||
if (commit.contains("pipeline_wait_strategy")) {
|
||||
std::string strategy_str =
|
||||
toml::get<std::string>(commit.at("pipeline_wait_strategy"));
|
||||
if (strategy_str == "WaitIfStageEmpty") {
|
||||
config.pipeline_wait_strategy = WaitStrategy::WaitIfStageEmpty;
|
||||
} else if (strategy_str == "WaitIfUpstreamIdle") {
|
||||
config.pipeline_wait_strategy = WaitStrategy::WaitIfUpstreamIdle;
|
||||
} else if (strategy_str == "Never") {
|
||||
config.pipeline_wait_strategy = WaitStrategy::Never;
|
||||
} else {
|
||||
std::cerr << "Warning: Unknown pipeline_wait_strategy '" << strategy_str
|
||||
<< "', using default (WaitIfUpstreamIdle)" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
parse_field(commit, "pipeline_release_threads",
|
||||
config.pipeline_release_threads);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -253,6 +272,14 @@ bool ConfigParser::validate_config(const Config &config) {
|
||||
valid = false;
|
||||
}
|
||||
|
||||
if (config.commit.pipeline_release_threads < 1 ||
|
||||
config.commit.pipeline_release_threads > 64) {
|
||||
std::cerr << "Configuration error: commit.pipeline_release_threads must be "
|
||||
"between 1 and 64, got "
|
||||
<< config.commit.pipeline_release_threads << std::endl;
|
||||
valid = false;
|
||||
}
|
||||
|
||||
// Validate subscription configuration
|
||||
if (config.subscription.max_buffer_size_bytes == 0) {
|
||||
std::cerr << "Configuration error: subscription.max_buffer_size_bytes must "
|
||||
|
||||
Reference in New Issue
Block a user