diff options
author | Silvio Rhatto <rhatto@riseup.net> | 2010-08-21 18:05:08 -0300 |
---|---|---|
committer | Silvio Rhatto <rhatto@riseup.net> | 2010-08-21 18:05:08 -0300 |
commit | 1f77a77fefea93be7380eb4735837d02f2bdafc8 (patch) | |
tree | 2dfe9ffeda4a77db34e003d775cabe325dc668d1 /files | |
parent | d594b983a70576a3525956686dce2c46f9a2593d (diff) | |
download | puppet-backup-1f77a77fefea93be7380eb4735837d02f2bdafc8.tar.gz puppet-backup-1f77a77fefea93be7380eb4735837d02f2bdafc8.tar.bz2 |
Fixing lockfile checks for rsync handler
Diffstat (limited to 'files')
-rw-r--r-- | files/handlers/rsync | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/files/handlers/rsync b/files/handlers/rsync index 9f4590e..ba7dd89 100644 --- a/files/handlers/rsync +++ b/files/handlers/rsync @@ -847,7 +847,13 @@ function test_connect { function set_lockfile { if [ ! -z "$lockfile" ]; then - $touch $lockfile || warning "Could not create lockfile $lockfile" + mkdir -p `dirname $lockfile` + if ( set -o noclobber; echo "$$" > "$lockfile" ) &> /dev/null; then + trap 'rm -f "$lockfile"' INT TERM EXIT + else + info "Could not create lockfile $lockfile, exiting" + exit + fi fi } @@ -860,6 +866,23 @@ function unset_lockfile { } +function check_lockfile { + + local pid + + if [ ! -z "$lockfile" ] && [ -f "$lockfile" ]; then + pid="`cat $lockfile`" + if ps $pid &> /dev/null; then + info "Another backup is running for $lockfile, skipping run" + exit + else + info "Found old lockfile $lockfile, removing it" + unset_lockfile + fi + fi + +} + function set_filelist { filelist_flag="" @@ -1045,6 +1068,7 @@ function end_mux { # the backup procedure eval_config +check_lockfile set_lockfile set_rsync_options start_mux |