Managing HP Serviceguard for Linux, Eighth Edition, March 2008

Understanding Serviceguard Software Components
How Packages Run
Chapter 368
When a Service or Subnet Fails, or a Dependency is
Not Met
What happens when something goes wrong? If a service fails and there
are no more restarts, or if a configured dependency on another package is
not met, then a failover package will halt on its current node and,
depending on the setting of the package switching flags, may be
restarted on another node. If a multi-node or system multi-node package
fails, all of the packages that have configured a dependency on it will also
fail.
Package halting normally means that the package halt script executes
(see the next section). However, if a failover package’s configuration has
the service_fail_fast_enabled flag set to yes for the service that
fails, then the node will halt as soon as the failure is detected. If this flag
is not set, the loss of a service will result in halting the package
gracefully by running the halt script.
If auto_run is set to yes, the package will start up on another eligible
node, if it meets all the requirements for startup. If auto_run is set to no,
then the package simply halts without starting up anywhere else.
NOTE If a package is dependent on a subnet, and the subnet on the primary
node fails, the package will start to shut down. If the subnet recovers
immediately (before the package is restarted on an adoptive node), the
package manager restarts the package on the same node; no package
switch occurs.
When a Package is Halted with a Command
The Serviceguard cmhaltpkg command has the effect of executing the
package halt script, which halts the services that are running for a
specific package. This provides a graceful shutdown of the package that
is followed by disabling automatic package startup (see auto_run on
page 211).
You cannot halt a multi-node or system multi-node package unless all
packages that have a configured dependency on it are down. Use
cmviewcl to check the status of dependents. For example, if pkg1 and
pkg2 depend on PKGa, both pkg1 and pkg2 must be halted before you
can halt PKGa.