This actually consists of several parts. * Added a generic cleanup-scheduling mechanism. Instead of calling "trap ... EXIT" directly, just call "push_trapfunc ..." instead and your cleanup function will be called along with any others. * Converted a few tests to use push_trapfunc. * Added "push_trapfunc cleanup_lvm" to snapshot.rc to address the particular problem that's driving this - snapshot tests not calling cleanup_lvm on their own and leaving bad state for the next test. Change-Id: I548a97a26328390992fc71ee1f03c0463703f9d7 Signed-off-by: Jeff Darcy <jdarcy@redhat.com> Reviewed-on: http://review.gluster.org/13933 Smoke: Gluster Build System <jenkins@build.gluster.com> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> CentOS-regression: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Atin Mukherjee <amukherj@redhat.com> Reviewed-by: Rajesh Joseph <rjoseph@redhat.com>
23 lines
642 B
Bash
23 lines
642 B
Bash
#!/bin/bash
|
|
|
|
# Make sure this only gets included/executed once. Unfortunately, bash doesn't
|
|
# usually distinguish between values that are unset and values that are null.
|
|
# To work around that, we declare TRAPFUNCS to be a one-element array right at
|
|
# the start, but that one element is : which is defined to do nothing.
|
|
|
|
if [ ${#TRAPFUNCS[@]} = 0 ]; then
|
|
TRAPFUNCS=(:)
|
|
|
|
push_trapfunc () {
|
|
TRAPFUNCS[${#TRAPFUNCS[@]}]="$@"
|
|
}
|
|
|
|
execute_trapfuncs () {
|
|
for i in "${TRAPFUNCS[@]}"; do
|
|
$i
|
|
done
|
|
}
|
|
|
|
trap execute_trapfuncs EXIT
|
|
fi
|