Tony and Liane determined that svcadm enable -ts wasn't working because
Clearview's datalink service didn't have a restarter property group.
During investigation, they discovered a way to work around this with
some shell scripting.

Ordinarily, all valid service instances have restarter property groups
because svc.startd creates them as it determines the instance's
properties are valid.  At boot, however, svc.startd evaluates service
instances as it initially walks the repository, which triggers restarter
events as it goes.  The events are processed in parallel with the walk,
and apparently this results in network/physical (and its pre-Clearview
dependencies) being started before svc.startd has finished walking the
repository.  (I believe services are walked in the order they were added
to the repository, so this probably doesn't occur in initial install of
Clearview bits, where the datalink service is presumably in the seed
repository, near the top of the table.  Only on upgrade does datalink
end up near the end.)

This root cause presents one solution: Modify svc.startd to create
restarter property groups on all services before starting any of them.
This would provide the same SCF environment to early services as to late
ones.  That is, service instances only lack restarter property groups
when they're not configured properly or something else is wrong.
I don't think this would cause a significant performance problem because
creating restarter property groups shouldn't require disk I/O and should
be relatively fast.  It's a nontrivial change to a crucial component,
though, and certainly won't be done within the next few days.  For now,
Clearview could use the shell script workaround Tony and Liane found.

An alternative solution, however, is to modify svcadm enable -ts to stop
interpreting the restarter property group's absence as an error and
instead just wait for it to appear.  Since it should be interpreted as
an error after boot, but we don't have a good way to tell when that's
the case, Tony and I think that for this situation svcadm should inform
the user that the restarter property group is missing, that that's
usually an error, and that it is waiting in case it isn't.  This would
be a change in behavior for a relatively rare case, and could in theory
be problematic if a program is invoking svcadm enable -ts without
passing the message on to the user.  This fix should be pretty simple
and might be doable with or before the Clearview putback.  I don't like
the wishy-washy semantics, though.

So it seems that our choice is between an easy svcadm special change and
an ugly Clearview workaround plus a more complicated startd fix later.
I like the startd fix better in the long-term, but I'm not sure it's
a slam-dunk.  Please opine.


David

Reply via email to