Repository navigation
Conversation
Thirteen omitempty bool fields of CLI-defined config structs (variables.*.sensitive,
bundle.deployment.lock.force, workspace.azure_use_msi and
experimental_is_unified_host, artifacts.*.dynamic_version, targets.*.default,
experimental.{immutable_folder,python_wheel_wrapper,use_legacy_run_as,
skip_artifact_cleanup,skip_name_prefix_for_schema} and
experimental.pydabs.enabled) become *bool, like lock.enabled already is.
As plain bools, an explicit false was dropped by the typed-to-dynamic
conversion that runs after every mutator: it never showed in the config, and a
target could not override true with false (e.g. dynamic_version: false in a
target lost to true at the root). Readers use config.IsExplicitlyEnabled, so
behavior is otherwise unchanged; PyDABs keeps treating only enabled: true as
configured.
A unit test guards that no CLI-defined struct reintroduces an omitempty bool
without ForceSendFields; bundle.force is skipped since it is readonly (set from
--force, not by users).
Co-authored-by: Isaac <no-reply@databricks.com>
Co-authored-by: Isaac <no-reply@databricks.com>
Co-authored-by: Isaac <no-reply@databricks.com>
Contributor
|
Commit: Regression test reportSelected 2 changed tests (limit=20, 0 not selected) 4 tests: regression=4 unreleased=0 coverage=0 failing=0
TestAccept/bundle/refschema/DMS=: branch ✅ | main (77950b6) ❌ | latest (v1.25.0) ❌main (77950b6): latest (v1.25.0): TestAccept/bundle/refschema/DMS=true: branch ✅ | main (77950b6) ❌ | latest (v1.25.0) ❌main (77950b6): latest (v1.25.0): TestAccept/bundle/validate/explicit_false/DMS=: branch ✅ | main (77950b6) ❌ | latest (v1.25.0) ❌main (77950b6): latest (v1.25.0): same output as main (77950b6) TestAccept/bundle/validate/explicit_false/DMS=true: branch ✅ | main (77950b6) ❌ | latest (v1.25.0) ❌main (77950b6): latest (v1.25.0): |
…overrides TestConfigBoolsArePointers now fails for any bool field of a CLI-defined config struct, not only omitempty ones in structs without ForceSendFields. The fields that predate it are listed with the reason they stay bool, and the test also fails if a listed field goes away. The acceptance test now overrides lock.force and azure_use_msi from a target too, and the changelog entry covers every affected field. Co-authored-by: Isaac <no-reply@databricks.com>
Collaborator
✅ Integration test reportCommit: 9a113f7
Top 3 slowest tests (at least 2 minutes):
|
replace_existing on postgres endpoints, databases and roles lost an explicit false like the other plain bools did: their configs declare no ForceSendFields. They become *bool. replace_existing/purge_on_delete on postgres branches and purge_on_delete on postgres projects kept it only through the ForceSendFields those configs declared for these fields; bundle.deployment.fail_on_active_runs likewise (#7117). They become *bool and those ForceSendFields go away; the postgres configs keep their MarshalJSON/UnmarshalJSON, which exist because they embed an SDK spec. The direct engine reads them when building the create and delete requests, and RemapState leaves them unset. Lifecycle, Presets and DashboardConfig keep their ForceSendFields: it covers more than their bool (depends_on, the other presets, the dashboards API). The acceptance test overrides every one of these fields from a target. Co-authored-by: Isaac <no-reply@databricks.com>
denik
marked this pull request as ready for review
November 10, 2026 10:53
denik
enabled stacked auto-merge
November 10, 2026 10:57
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Optional bools in CLI-defined config structs were plain
boolwithomitempty. The typed-to-dynamic conversion that runs after every mutator drops zero values, so an explicitfalsewas lost unless the struct declaredForceSendFields:bundle validate -o json;truewithfalse. On main this is broken forartifacts.*.dynamic_version,bundle.deployment.lock.force,workspace.azure_use_msi(auth then fails with "more than one authorization method configured: azure and pat") andreplace_existingon postgres endpoints, databases and roles;Changes
These fields become
*bool, likelock.enabledalready is; readers useconfig.IsExplicitlyEnabled(or dereference inline in the direct engine):variables.*.sensitive,artifacts.*.dynamic_version,bundle.deployment.lock.force,workspace.azure_use_msi,workspace.experimental_is_unified_host,targets.*.default,experimental.{immutable_folder,python_wheel_wrapper,use_legacy_run_as,skip_artifact_cleanup,skip_name_prefix_for_schema},experimental.pydabs.enabled;replace_existingon postgres branches, endpoints, databases and roles, andpurge_on_deleteon postgres projects and branches;bundle.deployment.fail_on_active_runs.The last two groups already kept an explicit
falsethroughForceSendFieldsdeclared for them (postgres projects and branches,Deploymentfrom #7117); with*boolthoseForceSendFieldsgo away. The postgres configs keep theirMarshalJSON/UnmarshalJSON, which exist because they embed an SDK spec.Still plain
bool:bundle.force(readonly, set from--force), and three fields whose struct'sForceSendFieldscovers more than the bool (lifecycle.prevent_destroywithdepends_on,presets.artifacts_dynamic_versionwith the other presets,dashboards.*.embed_credentials, which the direct engine passes to the dashboards API).TestConfigBoolsArePointersfails for any otherboolin a CLI-defined config struct.Tests
acceptance/bundle/validate/explicit_false: explicitfalsevalues are kept, and a target overridestruewithfalsefor every field above that a target can set (on main the broken ones staytrue).This pull request and its description were written by Isaac.