commit 15fb5b13ff61821353cdaa4fd25834d8404a636d
Author: Arkadiusz Miśkiewicz <[email protected]>
Date:   Tue Mar 10 15:15:50 2015 +0100

    - rel 6; don't delete not own lockfile if lazy option is enabled; log pid

 rsnapshot-lockfile.patch | 60 ++++++++++++++++++++++++++++++++++++++++++++++++
 rsnapshot-pid.patch      | 38 ++++++++++++++++++++++++++++++
 rsnapshot.spec           |  6 ++++-
 3 files changed, 103 insertions(+), 1 deletion(-)
---
diff --git a/rsnapshot.spec b/rsnapshot.spec
index 92b7699..945adbd 100644
--- a/rsnapshot.spec
+++ b/rsnapshot.spec
@@ -3,12 +3,14 @@ Summary:      Program for efficient remote updates of backup 
sets
 Summary(pl.UTF-8):     Program do wydajnego zdalnego uaktualniania zbiorów 
kopii zapasowych
 Name:          rsnapshot
 Version:       1.3.1
-Release:       5
+Release:       6
 License:       GPL v2+
 Group:         Daemons
 Source0:       http://www.rsnapshot.org/downloads/%{name}-%{version}.tar.gz
 # Source0-md5: 588f92995dcf60a6ea6df8d94a017e7e
 Patch0:                %{name}-pod.patch
+Patch1:                %{name}-lockfile.patch
+Patch2:                %{name}-pid.patch
 URL:           http://www.rsnapshot.org/
 BuildRequires: rpm-perlprov
 Requires:      rsync
@@ -24,6 +26,8 @@ w oparciu o rsynca.
 %prep
 %setup -q
 %patch0 -p1
+%patch1 -p1
+%patch2 -p1
 
 %build
 %configure \
diff --git a/rsnapshot-lockfile.patch b/rsnapshot-lockfile.patch
new file mode 100644
index 0000000..1a16a57
--- /dev/null
+++ b/rsnapshot-lockfile.patch
@@ -0,0 +1,60 @@
+commit 8147e706d00fb2fcd0c50e95d54b9ffcb1f56932
+Author: drhyde <drhyde>
+Date:   Tue Apr 19 15:37:28 2011 +0000
+
+    Don't delete other processes' lockfiles if use_lazy_deletes is turned on!
+    
+    Log a warning whenever deleting another process's lockfile (but only a 
warning, not an error, because deleting *stale* lockfiles is kosher)
+    
+    Untested
+
+diff --git a/rsnapshot-program.pl b/rsnapshot-program.pl
+index 96656ac..5ce9dbb 100755
+--- a/rsnapshot-program.pl
++++ b/rsnapshot-program.pl
+@@ -285,7 +285,10 @@ chdir($config_vars{'snapshot_root'});
+ handle_interval( $cmd );
+ 
+ # if we have a lockfile, remove it
+-remove_lockfile();
++# however, this will have already been done if use_lazy_deletes is turned
++#   on, and there may be a lockfile from another process now in place,
++#   so in that case don't just blindly delete!
++remove_lockfile() unless($use_lazy_deletes);
+ 
+ # if we got this far, the program is done running
+ # write to the log and syslog with the status of the outcome
+@@ -2278,9 +2281,12 @@ sub add_lockfile {
+ }
+ 
+ # accepts no arguments
+-# accepts the path to a lockfile and tries to remove it
+-# returns undef if lockfile isn't defined in the config file, and 1 upon 
success
+-# also, it can exit the program with a value of 1 if it can't remove the 
lockfile
++#
++# returns undef if lockfile isn't defined in the config file
++# return 1 upon success or if there's no lockfile to remove
++# warn if the PID in the lockfile is not the same as the PID of this process
++# exit with a value of 1 if it can't read the lockfile
++# exit with a value of 1 if it can't remove the lockfile
+ #
+ # we don't use bail() to exit on error, because that would call
+ # this subroutine twice in the event of a failure
+@@ -2294,6 +2300,17 @@ sub remove_lockfile {
+       my $result = undef;
+       
+       if ( -e "$lockfile" ) {
++              if(open(LOCKFILE, $lockfile)) {
++                chomp(my $locked_pid = <LOCKFILE>);
++                close(LOCKFILE);
++                if($locked_pid != $$) {
++                  print_warn("About to remove lockfile $lockfile which 
belongs to a different process (this is OK if it's a stale lock)");
++                }
++              } else {
++                print_err ("Could not read lockfile $lockfile: $!", 0);
++                syslog_err("Error! Could not read lockfile $lockfile: $!");
++                exit(1);
++              }
+               print_cmd("rm -f $lockfile");
+               if (0 == $test) {
+                       $result = unlink($lockfile);
diff --git a/rsnapshot-pid.patch b/rsnapshot-pid.patch
new file mode 100644
index 0000000..6af1e10
--- /dev/null
+++ b/rsnapshot-pid.patch
@@ -0,0 +1,38 @@
+commit eb3b3264cd2c10720e92caf75671696859a88203
+Author: Kilburn <[email protected]>
+Date:   Sat Mar 2 11:02:49 2013 +0100
+
+    Print rnspashot's PID when logging to syslog
+    
+    Print rsnapshot's PID instead of the logger's PID when logging to
+    syslog. This is much more useful because it allow to relate log
+    lines to rsnapshot instances when there are multiple concurrent
+    ones. Previously each line had a different PID, even those
+    generated by the same instance.
+    
+    The change is achieved by dropping the "-i" option from the
+    logger's call and appending the rnapshot's PID to the tag itself.
+
+diff --git a/rsnapshot-program.pl b/rsnapshot-program.pl
+index 3d95cc2..9d9e50f 100755
+--- a/rsnapshot-program.pl
++++ b/rsnapshot-program.pl
+@@ -2098,15 +2098,15 @@ sub syslog_msg {
+       if (defined($config_vars{'cmd_logger'})) {
+               # print out our call to syslog
+               if (defined($verbose) && ($verbose >= 4)) {
+-                      print_cmd("$config_vars{'cmd_logger'} -i -p 
$facility.$level -t rsnapshot $msg");
++                      print_cmd("$config_vars{'cmd_logger'} -p 
$facility.$level -t rsnapshot[$$] $msg");
+               }
+               
+               # log to syslog
+               if (0 == $test) {
+-                      $result = system($config_vars{'cmd_logger'}, '-i', 
'-p', "$facility.$level", '-t', 'rsnapshot', $msg);
++                      $result = system($config_vars{'cmd_logger'}, '-p', 
"$facility.$level", '-t', "rsnapshot[$$]", $msg);
+                       if (0 != $result) {
+                               print_warn("Could not log to syslog:", 2);
+-                              print_warn("$config_vars{'cmd_logger'} -i -p 
$facility.$level -t rsnapshot $msg", 2);
++                              print_warn("$config_vars{'cmd_logger'} -p 
$facility.$level -t rsnapshot[$$] $msg", 2);
+                       }
+               }
+       }
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/rsnapshot.git/commitdiff/15fb5b13ff61821353cdaa4fd25834d8404a636d

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to