fix: exclude Postgres-specific vars from Airflow container environment#143
Open
tpwo wants to merge 2 commits into
Open
fix: exclude Postgres-specific vars from Airflow container environment#143tpwo wants to merge 2 commits into
tpwo wants to merge 2 commits into
Conversation
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.
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.
PGDATAwas included in the Airflow container environment via**default_db_variablesspread inget_default_environment_variables(). The Airflow entrypoint runssudo chmod -R o+xrw $PGDATAwhen$PGDATAis 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_variablesto only passAIRFLOW__*-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!
developmentbranch, pleasemake sure you set it as the target of this PR.
pytest testsand 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.