Hmmm, how does svc.startd recover FMRI status when it dies and is
restarted?

Clearly the contract decoration case will help!  For each adopted
contract on restart svc.startd can match the ctid to FMRI.

But what about service state?  The existence of a non-empty process
contract for some non-transient FMRI does not imply "online," nor does
the existence of a non-empty process contract for some transient FMRI
imply "start method running."

Perhaps there should be a way to decorate process contracts with service
state (starting, online, degraded, stopping).

To simplify recovery and/or cancellation of method_threads in svc.startd
it'd be even better if we could rely on start/stop methods and/or the
services themselves to maintain this state property of process
contracts.  But we probably can't make that assumption.  We can't assume
monitor methods yet either.  So when svc.startd recovers, even if there
was a state decoration on every contract, it will not be able to always
fully recover state (e.g., if svc.startd died while some start method
was running but had not yet exited).

Or did I miss something about how svc.startd recorvers state?

Nico

Reply via email to