1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-01 04:58:35 +03:00

ctdb-tests: Factor out stack dumping and background marking code

This makes the code that uses it easier to modify.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
This commit is contained in:
Martin Schwenke 2015-06-15 20:04:16 +10:00 committed by Amitay Isaacs
parent 182ebc0728
commit 57146b0875

View File

@ -874,6 +874,27 @@ nfs_load_config ()
done
}
program_stack_traces ()
{
_prog="$1"
_max="${2:-1}"
_count=1
for _pid in ${FAKE_NFSD_THREAD_PIDS:-$FAKE_RPC_THREAD_PIDS} ; do
[ $_count -le $_max ] || break
cat <<EOF
Stack trace for ${_prog}[${_pid}]:
[<ffffffff87654321>] fake_stack_trace_for_pid_${_pid}/stack+0x0/0xff
EOF
_count=$(($_count + 1))
done
}
mark_background ()
{
sed -e 's@^@\&@'
}
# Set the required result for a particular RPC program having failed
# for a certain number of iterations. This is probably still a work
@ -940,43 +961,27 @@ program $_pn version $_ver is not available"
restart*)
_p="rpc.${_progname}"
case "$_action" in
*:b) _bg="&" ;;
*) _bg="" ;;
*:b) _bg=mark_background ;;
*) _bg=cat ;;
esac
case "$_progname" in
nfsd)
_t=$(program_stack_traces "nfsd" 5)
_t="${_t}${_t:+${_nl}}Starting nfslock: OK
Starting nfs: OK"
_t=$(echo "$_t" | $_bg)
_t="\
Trying to restart NFS service"
if [ -n "$CTDB_NFS_DUMP_STUCK_THREADS" ] ; then
for _pid in $FAKE_NFSD_THREAD_PIDS ; do
_t="\
$_t
${_bg}Stack trace for nfsd[${_pid}]:
${_bg}[<ffffffff87654321>] fake_stack_trace_for_pid_${_pid}/stack+0x0/0xff"
done
fi
_t="\
${_t}
${_bg}Starting nfslock: OK
${_bg}Starting nfs: OK"
Trying to restart NFS service
${_t}"
;;
lockd)
_t="\
Trying to restart lock manager service
${_bg}Starting nfslock: OK"
_t=$(echo "Starting nfslock: OK" | $_bg)
_t="Trying to restart lock manager service${_t:+${_nl}}${_t}"
;;
*)
_t="Trying to restart $_progname [${_p}]"
if [ -n "$CTDB_NFS_DUMP_STUCK_THREADS" ] ; then
for _pid in $FAKE_RPC_THREAD_PIDS ; do
_t="\
$_t
Stack trace for ${_p}[${_pid}]:
[<ffffffff87654321>] fake_stack_trace_for_pid_${_pid}/stack+0x0/0xff"
done
fi
_stacks=$(program_stack_traces "$_p" 5)
_t="${_t}${_stacks:+${_nl}}${_stacks}"
esac
_out="${_out}${_out:+${_nl}}${_t}"
;;