-
Notifications
You must be signed in to change notification settings - Fork 61
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
Error starting one service causes others in task set to not start #231
Comments
Thanks for the report. Yeah, this is definitely non-ideal: you'd expect it to start Here's the output of
So I don't think this has to do with locking or even the 1s startup wait time (it happens for any kind of service-start error), but rather the fact that we're starting them sequentially and stopping the whole thing if there's one error. Relatedly, there's a TODO comment in I'll update the issue title to reflect this better. |
This can probably be done via the state engine's "lanes" concept. Currently they all likely get put into the default lane. |
Pebble gets locked after starting the service which then exits immediately.
Layer specification used:
Pebble will not try to start service
c
as can be seen in debug output:Services status looks wrong (because both
b
andc
are marked as inactive):doStart
function is executed only twice (for servicea
andb
and never called forc
)pebble/internals/overlord/servstate/handlers.go
Line 108 in 0c64c21
Here is the place where it will lock because for service
b
we will never get anything in mentioned channels.pebble/internals/overlord/servstate/handlers.go
Lines 139 to 161 in 0c64c21
Adding default case resolves the issue, but that doesn't seem to be the right fix.
I suspect that
okayWaitElapsed
is missing some logic to handle such situation?pebble/internals/overlord/servstate/handlers.go
Lines 444 to 460 in 0c64c21
The text was updated successfully, but these errors were encountered: