Skip to content

fix: exclude Postgres-specific vars from Airflow container environment#143

Open
tpwo wants to merge 2 commits into
GoogleCloudPlatform:developmentfrom
tpwo:fix-container-race-condition
Open

fix: exclude Postgres-specific vars from Airflow container environment#143
tpwo wants to merge 2 commits into
GoogleCloudPlatform:developmentfrom
tpwo:fix-container-race-condition

Conversation

@tpwo

@tpwo tpwo commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

PGDATA was included in the Airflow container environment via **default_db_variables spread in get_default_environment_variables(). The Airflow entrypoint runs sudo chmod -R o+xrw $PGDATA when $PGDATA is set, which corrupts the Postgres data directory permissions. Postgres requires strict permissions (0700/0750) and refuses to start after the chmod, causing its hostname to disappear from Docker DNS -- which surfaced as a misleading DNS resolution error.

Filter default_db_variables to only pass AIRFLOW__*-prefixed keys to the Airflow container. Postgres-specific vars (PGDATA, POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB) are not needed by Airflow.

Resolves #142.

New PR

Thank you for contributing!

  • (CONFIRMED) All contributions have to be merged to the development branch, please
    make sure you set it as the target of this PR.
  • Confirm you ran pytest tests and all the unit tests are green -- Tests are failing locally, but I found out that this is because of other reasons. I created a PR fix: correct integration test assertions for postgresql create #144 to fix tests.

Race condition on first start: entrypoint runs "airflow db migrate"
immediately after container.start(), but network attachment happened
after in Python code -- causing DNS resolution failure for the DB
container hostname.

Attach the Airflow container to the Docker network while it is still
in CREATED state, before calling container.start(), so the hostname is
resolvable from the first instruction of the entrypoint.
PGDATA and POSTGRES_* vars are only needed by the postgres container.
Passing them to the Airflow container caused entrypoint.sh to run
chmod -R o+xrw on the shared Postgres data volume, which violates
Postgres permission requirements (0700/0750) and crashed the DB.

Also: revert: remove network pre-attachment fixes based on misdiagnosis

These changes were added to fix a DNS resolution failure, but the
root cause was the DB container crashing due to wrong permissions.
The network timing fixes are not needed.
@tpwo tpwo changed the title fix: attach Airflow container to network before starting fix: exclude Postgres-specific vars from Airflow container environment Jul 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant