Replace server_side_default with backend_default#4490
Draft
Conversation
Collaborator
|
Commit: c31e636
27 interesting tests: 8 flaky, 7 KNOWN, 5 SKIP, 4 RECOVERED, 3 FAIL
Top 50 slowest tests (at least 2 minutes):
|
70c35f1 to
2fb9d43
Compare
88e8d44 to
4aaf27c
Compare
4aaf27c to
3dc1550
Compare
ilyakuz-db
approved these changes
Feb 11, 2026
denik
added a commit
that referenced
this pull request
Feb 11, 2026
…#4491) ## Changes New "empty" reason in plan triggers when old/new & remote values are all either nil or zero or empty slice/map. ## Why Ignoring differences like nil vs "" and nil vs 0 reduces drift when backend has preferred representation. For example, model_serving_endpoints.description is converted from nil to "" by backend. jobs.timeout_seconds has a default 0. This supports removing server_side_default rule which currently marks this changes as "skip". #4490 ## Tests Existing tests.
e2ec42e to
7626cbd
Compare
Adds a new `backend_defaults` rule type that skips changes where old/new are nil but remote is set, constrained to specific field patterns and optionally to specific allowed values. Values use json.RawMessage to support type-accurate comparison against the remote state. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ouses Each entry references the corresponding Terraform provider default with a link to the source and the exact line that sets the default. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Based on analysis of Terraform provider (commit 4eba541): - clusters: ignore aws/azure/gcp_attributes (SetSuppressDiff), enable_elastic_disk (SetComputed) - sql_warehouses: ignore channel, tags, warehouse_type (SetSuppressDiff) - model_serving_endpoints: ignore config.traffic_config (SetComputed + SuppressDiff on routes); backend_defaults for served_entities name/ workload_type and auto_capture_config.enabled (SetComputed) - dashboards: backend_defaults for embed_credentials=true (SetDefault) - apps: backend_defaults for compute_size (SetComputed) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…efaults The generic catch-all rule that marked all remote-only fields as server_side_default is replaced with explicit backend_defaults entries for each resource type. This makes field handling explicit and auditable. New backend_defaults entries: - jobs: timeout_seconds, tasks[*].timeout_seconds, tasks[*].notebook_task.source, tasks[*].new_cluster.data_security_mode, job_clusters[*].new_cluster.data_security_mode - pipelines: storage, root_path - model_serving_endpoints: route_optimized - registered_models: storage_location, owner, full_name, metastore_id (plus ignore_remote_changes for created_at/by, updated_at/by) - volumes: storage_location Also removes the server_side_default special case in configsync/diff.go (per existing TODO) and the ReasonServerSideDefault constant. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…aults
Cross-referenced terraform-provider-databricks source (SetComputed,
SetSuppressDiff, SetForceNew) against resources.yml to fix gaps.
Added backend_defaults (SetComputed/SetSuppressDiff — backend-set fields):
- clusters: enable_local_disk_encryption, node_type_id, driver_node_type_id,
driver_instance_pool_id
- jobs: run_as, spark_python_task.source, sql_task.file.source,
dbt_task.source (+ for_each_task variants for all), new_cluster computed
fields matching clusters
- pipelines: event_log.catalog, event_log.schema, cluster computed fields
- sql_warehouses: enable_serverless_compute
- experiments: artifact_location
Added ignore_remote_changes:
- sql_warehouses: min_num_clusters (SetSuppressDiff)
- quality_monitors: skip_builtin_dashboard (not returned by API)
Added recreate_on_changes:
- pipelines: gateway_definition.{connection_id,connection_name,
gateway_storage_catalog,gateway_storage_schema},
ingestion_definition.ingest_from_uc_foreign_catalog
Removed dead backend_defaults — these are TF client-side SetDefault()
values already applied by resource_mutator.go, so the field is never nil
and backend_defaults (which triggers on old=nil AND new=nil) never fires:
- jobs: max_concurrent_runs, schedule/trigger/continuous.pause_status
- pipelines: edition, channel
- dashboards: embed_credentials (also had wrong value: yml said true,
mutator sets false)
- clusters: autotermination_minutes
- sql_warehouses: auto_stop_mins, enable_photon, max_num_clusters,
spot_instance_policy
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
8795ceb to
614ee77
Compare
614ee77 to
c31e636
Compare
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.
Changes
Why
The "server_side_default" assumes that any setting appearing in the remote state that is not in the config should be ignored. This works when resources are only edited via DABs. However, if we need bundle plan to detect remote changes, this can ignore too much.
Tests
Existing tests.