In real life this often occurs when the service is crashing continually with an EADDRINUSE error because there's already an (orphaned) process bound to that port from a previous pgctl incantation, but the ready check succeeds because it can hit the status endpoint of the (orphaned, old!) process.
This one is kind of tricky to solve since we really have no way to deal with crashes / restarts in pgctl (s6 just restarts them forever), so I don't know that we can actually fix this. This would be on my wish-list for a pgctl replacement though, since this causes us a lot of confusion.
A service which keeps crashing but has a ready check that's exiting
0
will show as ready:In real life this often occurs when the service is crashing continually with an
EADDRINUSE
error because there's already an (orphaned) process bound to that port from a previous pgctl incantation, but the ready check succeeds because it can hit the status endpoint of the (orphaned, old!) process.This one is kind of tricky to solve since we really have no way to deal with crashes / restarts in pgctl (s6 just restarts them forever), so I don't know that we can actually fix this. This would be on my wish-list for a pgctl replacement though, since this causes us a lot of confusion.