apollo_deployments: assert every config param is set in each service's app configs - #15083
Conversation
PR SummaryLow Risk Overview The duplicate-key test is refactored to share Reviewed by Cursor Bugbot for commit 97a1b57. Bugbot is set up for automated code reviews on this repo. Configure here. |
c04294e to
a86c5b5
Compare
899c0ab to
b36bf75
Compare
|
Artifacts upload workflows: |
b36bf75 to
a337af0
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit a337af0. Configure here.
yoavGrs
left a comment
There was a problem hiding this comment.
@yoavGrs made 2 comments.
Reviewable status: 0 of 1 files reviewed, 3 unresolved discussions (waiting on matanl-starkware).
crates/apollo_deployments/src/deployment_definitions_test.rs line 105 at r1 (raw file):
/// Test that every config param a service needs is set explicitly in its application config /// files: the node loads with `ignore_default_values`, so an absent param either fails
Where does the test set ignore_default_values=true?
Code quote:
ignore_default_valuescrates/apollo_deployments/src/deployment_definitions_test.rs line 132 at r1 (raw file):
for node_type in NodeType::iter() { for node_service in node_type.all_service_names() { let deployment_file = File::open(node_service.replacer_deployment_file_path()).unwrap();
Can you reuse the production's loading code?
…s app configs The node loads with ignore_default_values, so a param missing from a service's app configs is either a startup failure or a silent default. Nothing caught that: duplicate_config_entries opens the same files but only checks duplicates, deployment_files_are_up_to_date compares presets against themselves, and the hybrid system test runs the one overlay where the missing subtree is disabled. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
a337af0 to
97a1b57
Compare
|
Both addressed in 97a1b57. line 105 — the test doesn't set it; the deployed pod does. Reworded to name the call site: line 132 — partially. The full loader can't run on these files: the replacer app configs hold What I reused instead: the file list comes from production's own If you'd rather have real reuse of the merge step I can make |
|
Followed up in #15085, stacked on this one. Making Stubbing the placeholders first turned out to unlock the whole entry point instead: substitute a replacer placeholder with the schema default and the six pointer targets with a well-formed dummy, and all 19 layout/service configs load through That catches stale params ( |
matanl-starkware
left a comment
There was a problem hiding this comment.
@matanl-starkware made 2 comments.
Reviewable status: 0 of 1 files reviewed, 2 unresolved discussions (waiting on yoavGrs).
crates/apollo_deployments/src/deployment_definitions_test.rs line 105 at r1 (raw file):
Previously, yoavGrs wrote…
Where does the test set
ignore_default_values=true?
Fixed the comment. The caller site passes this param.
crates/apollo_deployments/src/deployment_definitions_test.rs line 132 at r1 (raw file):
Previously, yoavGrs wrote…
Can you reuse the production's loading code?
Can't reuse it directly — update_config_map type-checks, and 116 app-config values are $$$_..._$$$ placeholders that fail it. Stubbed those instead and used the full loader: PR 15085
yoavGrs
left a comment
There was a problem hiding this comment.
@yoavGrs reviewed 1 file and all commit messages, and resolved 2 discussions.
Reviewable status:complete! all files reviewed, all discussions resolved (waiting on matanl-starkware).

Stacked on #15082 — rebase onto main-v0.14.4 once it merges. Fails without it.
The node loads with ignore_default_values, so a param missing from a service's app configs is either a startup failure or a silent default. The test asserts each service sets every schema param, minus secrets, pointer targets and disabled subtrees.
TODO at deployment_definitions_test.rs:46 stays open — value-level validation. It wouldn't have caught this:
central_sync_client_config.#is_nonedefaults to true.