Managing HP Serviceguard for Linux, Seventh Edition, July 2007

Planning and Documenting an HA Cluster
Package Configuration Planning
Chapter 4126
;;
stop)
stop_command $*
exit_val=$?
;;
validate)
validate_command $*
exit_val=$?
;;
*)
sg_log 0 "Unknown entry point $1"
;;
esac
exit $exit_val
For more information about integrating an application with
Serviceguard, see the white paper Framework for HP Serviceguard
Toolkits, which includes a suite of customizable scripts. The white paper
is included in the Serviceguard Developer’s Toolkit, which you can
download free of charge from http://www.hp.com/go/softwaredepot.
Using Serviceguard Commands in an External Script
You can use Serviceguard commands (such as cmmodpkg) in an external
script. These commands must not interact with the package itself (that
is, the package that runs the external script) but can interact with other
packages. But be careful how you code these interactions.
If a Serviceguard command interacts with another package, be careful to
avoid command loops. For instance, a command loop might occur under
the following circumstances. Suppose a pkg1 script does a cmmodpkg -d
of pkg2, and a pkg2 script does a cmmodpkg -d of pkg1. If both pkg1 and
pkg2 start at the same time, the pkg1 script now tries to cmmodpkg pkg2.
But that cmmodpkg command has to wait for pkg2 startup to complete.
The pkg2 script tries to cmmodpkg pkg1, but pkg2 has to wait for pkg1
startup to complete, thereby causing a command loop.
To avoid this situation, it is a good idea to specify a run_script_timeout
and halt_script_timeout for all packages, especially packages that use
Serviceguard commands in their external scripts. If a timeout is not
specified and your package has a command loop as described above,
inconsistent results can occur, including a hung cluster.