Skip to content

Fixes #26775: quote OIDC_CUSTOM_PARAMS default to prevent compose brace-parsing crash#27217

Closed
mohitjeswani01 wants to merge 1 commit intoopen-metadata:mainfrom
mohitjeswani01:fix/26775-oidc-custom-params-compose-brace-parsing
Closed

Fixes #26775: quote OIDC_CUSTOM_PARAMS default to prevent compose brace-parsing crash#27217
mohitjeswani01 wants to merge 1 commit intoopen-metadata:mainfrom
mohitjeswani01:fix/26775-oidc-custom-params-compose-brace-parsing

Conversation

@mohitjeswani01
Copy link
Copy Markdown

Describe your changes:

Fixes #26775

I worked on all Docker Compose files because the line:
OIDC_CUSTOM_PARAMS: ${OIDC_CUSTOM_PARAMS:-{}} was fragile —
the {} default value contains curly braces that conflict with
Compose variable interpolation syntax, causing the server to crash
on startup with Malformed YAML: customParams: {}}.

Root Cause

Docker Compose interprets {} inside ${} as nested substitution,
producing malformed YAML. The fix is to wrap the entire value in
double quotes — Compose still performs variable substitution inside
quoted strings, so env var override continues to work correctly.

What I Changed

Replaced all 16 occurrences across 8 Docker Compose files:

# Before (broken)
OIDC_CUSTOM_PARAMS: ${OIDC_CUSTOM_PARAMS:-{}}

# After (fixed)
OIDC_CUSTOM_PARAMS: "${OIDC_CUSTOM_PARAMS:-{}}"

Files fixed:

  • docker/development/docker-compose-gcp.yml
  • docker/development/docker-compose-postgres-fuseki.yml
  • docker/development/docker-compose-postgres.yml
  • docker/development/docker-compose.yml
  • docker/docker-compose-openmetadata/docker-compose-openmetadata.yml
  • docker/docker-compose-quickstart/docker-compose-postgres.yml
  • docker/docker-compose-quickstart/docker-compose-rdf.yml
  • docker/docker-compose-quickstart/docker-compose.yml

Verification

  • Env var override still works when OIDC_CUSTOM_PARAMS is set
  • Defaults safely to {} (valid JSON empty object) when not set
  • Consistent with other quoted variables in the same files
    e.g. OIDC_SCOPE: ${OIDC_SCOPE:-"openid email profile"}
  • 8 files changed, 16 insertions, 16 deletions — nothing else touched

Type of change:

  • Bug fix

Checklist:

  • I have read the CONTRIBUTING document.
  • My PR title is Fixes #26775: quote OIDC_CUSTOM_PARAMS default to prevent compose brace-parsing crash
  • I have commented on my code, particularly in hard-to-understand areas.
  • For JSON Schema changes: I updated the migration scripts or explained why it is not needed.

Copilot AI review requested due to automatic review settings April 9, 2026 20:28
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 9, 2026

Hi there 👋 Thanks for your contribution!

The OpenMetadata team will review the PR shortly! Once it has been labeled as safe to test, the CI workflows
will start executing and we'll be able to make sure everything is working as expected.

Let us know if you need any help!

@harshach harshach added the safe to test Add this label to run secure Github workflows on PRs label Apr 9, 2026
@gitar-bot
Copy link
Copy Markdown

gitar-bot Bot commented Apr 9, 2026

Code Review ✅ Approved

Quoting OIDC_CUSTOM_PARAMS default value prevents Docker Compose from misinterpreting braces as variable references. No issues found.

Options

Display: compact → Showing less information.

Comment with these commands to change:

Compact
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Gitar

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR addresses a Docker Compose interpolation edge case where using {} as the default value for OIDC_CUSTOM_PARAMS inside ${...:-...} can produce malformed YAML and crash OpenMetadata on startup (Fixes #26775).

Changes:

  • Wrapped OIDC_CUSTOM_PARAMS values in double quotes across all affected Docker Compose files so the ${OIDC_CUSTOM_PARAMS:-{}} default no longer triggers brace-related interpolation issues.
  • Applied the same fix consistently across development, OpenMetadata, and quickstart Compose variants.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated no comments.

Show a summary per file
File Description
docker/development/docker-compose-gcp.yml Quotes OIDC_CUSTOM_PARAMS interpolation to prevent malformed default expansion.
docker/development/docker-compose-postgres-fuseki.yml Quotes OIDC_CUSTOM_PARAMS interpolation to prevent malformed default expansion.
docker/development/docker-compose-postgres.yml Quotes OIDC_CUSTOM_PARAMS interpolation to prevent malformed default expansion.
docker/development/docker-compose.yml Quotes OIDC_CUSTOM_PARAMS interpolation to prevent malformed default expansion.
docker/docker-compose-openmetadata/docker-compose-openmetadata.yml Quotes OIDC_CUSTOM_PARAMS interpolation to prevent malformed default expansion.
docker/docker-compose-quickstart/docker-compose-postgres.yml Quotes OIDC_CUSTOM_PARAMS interpolation to prevent malformed default expansion.
docker/docker-compose-quickstart/docker-compose-rdf.yml Quotes OIDC_CUSTOM_PARAMS interpolation to prevent malformed default expansion.
docker/docker-compose-quickstart/docker-compose.yml Quotes OIDC_CUSTOM_PARAMS interpolation to prevent malformed default expansion.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 9, 2026

🟡 Playwright Results — all passed (37 flaky)

✅ 3581 passed · ❌ 0 failed · 🟡 37 flaky · ⏭️ 207 skipped

Shard Passed Failed Flaky Skipped
🟡 Shard 1 450 0 7 2
🟡 Shard 2 635 0 7 32
🟡 Shard 3 645 0 6 26
🟡 Shard 4 613 0 9 47
🟡 Shard 5 606 0 1 67
🟡 Shard 6 632 0 7 33
🟡 37 flaky test(s) (passed on retry)
  • Features/DataAssetRulesDisabled.spec.ts › Verify the Chart entity item action after rules disabled (shard 1, 1 retry)
  • Features/CustomizeDetailPage.spec.ts › Topic - customization should work (shard 1, 1 retry)
  • Features/CustomizeDetailPage.spec.ts › Dashboard - customization should work (shard 1, 1 retry)
  • Flow/Tour.spec.ts › Tour should work from help section (shard 1, 1 retry)
  • Flow/Tour.spec.ts › Tour should work from welcome screen (shard 1, 1 retry)
  • Flow/Tour.spec.ts › Tour should work from URL directly (shard 1, 1 retry)
  • Pages/UserCreationWithPersona.spec.ts › Create user with persona and verify on profile (shard 1, 1 retry)
  • Features/AdvancedSearch.spec.ts › Verify Rule functionality for field Database with AND operator (shard 2, 1 retry)
  • Features/BulkEditEntity.spec.ts › Glossary (shard 2, 1 retry)
  • Features/BulkImport.spec.ts › Keyboard Delete selection (shard 2, 1 retry)
  • Features/DataProductPersonaCustomization.spec.ts › Data Product - customization should work (shard 2, 1 retry)
  • Features/DataQuality/BundleSuiteBulkOperations.spec.ts › Bulk selection operations (shard 2, 1 retry)
  • Features/DataQuality/TableLevelTests.spec.ts › Table Column Name To Exist (shard 2, 1 retry)
  • Features/Glossary/GlossaryRemoveOperations.spec.ts › should add and remove owner from glossary term (shard 2, 1 retry)
  • Features/IncidentManager.spec.ts › Complete Incident lifecycle with table owner (shard 3, 1 retry)
  • Features/Permissions/GlossaryPermissions.spec.ts › Team-based permissions work correctly (shard 3, 1 retry)
  • Features/RestoreEntityInheritedFields.spec.ts › Validate restore with Inherited domain and data products assigned (shard 3, 1 retry)
  • Features/TestSuitePipelineRedeploy.spec.ts › Re-deploy all test-suite ingestion pipelines (shard 3, 1 retry)
  • Flow/CustomizeWidgets.spec.ts › Following Assets Widget (shard 3, 1 retry)
  • Flow/ExploreDiscovery.spec.ts › Should display deleted assets when showDeleted is checked and deleted is not present in queryFilter (shard 3, 1 retry)
  • Pages/Customproperties-part2.spec.ts › entityReferenceList shows item count, scrollable list, no expand toggle (shard 4, 1 retry)
  • Pages/DataContracts.spec.ts › Create Data Contract and validate for Table (shard 4, 1 retry)
  • Pages/DataContractsSemanticRules.spec.ts › Validate Owner Rule Is_Not (shard 4, 1 retry)
  • Pages/DataContractsSemanticRules.spec.ts › Validate Description Rule Is_Set (shard 4, 1 retry)
  • Pages/DataContractsSemanticRules.spec.ts › Validate DataProduct Rule Any_In (shard 4, 1 retry)
  • Pages/Entity.spec.ts › User as Owner Add, Update and Remove (shard 4, 1 retry)
  • Pages/Entity.spec.ts › Glossary Term Add, Update and Remove (shard 4, 1 retry)
  • Pages/Entity.spec.ts › Tag Add, Update and Remove (shard 4, 1 retry)
  • Pages/Entity.spec.ts › Glossary Term Add, Update and Remove (shard 4, 1 retry)
  • Pages/ExploreTree.spec.ts › Verify Database and Database Schema available in explore tree (shard 5, 1 retry)
  • ... and 7 more

📦 Download artifacts

How to debug locally
# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip    # view trace

@PubChimps
Copy link
Copy Markdown
Contributor

Hi @mohitjeswani01 , thanks for your pr here! We had a PR submitted for this already here. Please make sure that you are assigned an issue and that there is not a PR out for it already before submitting something. We will reopen this PR if necessary.

@PubChimps PubChimps closed this Apr 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

safe to test Add this label to run secure Github workflows on PRs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Issues with QuickStart

4 participants