-
Notifications
You must be signed in to change notification settings - Fork 206
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove scripted waiting for db in favor of healthcheck #5976
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice!
@@ -136,7 +135,12 @@ services: | |||
volumes: | |||
- ./workdir/db:/var/lib/postgresql/data:Z | |||
healthcheck: | |||
test: ["CMD", "sh", "-c", "echo 'select * from api_keys;' | psql -U openqa -v 'ON_ERROR_STOP=1' openqa"] | |||
test: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What's the functional difference here? Does this healthcheck somehow work different than before?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I added pg_isready -U openqa -d openqa
which should ensure it is possible to connect to the db.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok, but the previous check would also be retried until the db is ready, right? so this is just nicer, but it doesn't logically change anything that allows to remove the checks from the script, right?
or asked differently, is this change here needed for the PR?
I'm not questioning the change here, just wondering. Otherwise the checks in the script would have never been necessary, but the git log, e.g. 5232213, suggests that there can be a race condition.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
so this is just nicer
Yes, correct.
is this change here needed for the PR?
Probably not, I guess the former test would work as well. This (pg_isready
) is a recommended way to check, so I added it.
From my understanding the presence of
depends_on:
db:
condition: service_healthy
together with an appropriate health-check in the db container should be enough. And that's precisely what the linked commit adds. The check in the script I removed was added before that..
Otherwise the checks in the script would have never been necessary
If I am reading the history correctly, it was introduced in the opposite order and the script wasn't necessary (unless of course docker didn't know proper healthchecks back then).
We should also note, that the podman/docker was itself also improved in the meantime and maybe it was also not behaving correctly at that time. It could be also that I am utterly wrong and we will see the race condition in the near feature.
Reference: https://progress.opensuse.org/issues/167524