Package: logrotate
Version: 3.8.7-1+b1
Severity: normal
Tags: upstream patch

Dear Maintainer,

Sometimes files are not rotated during weekly logrotation, despite of
the fact that the last rotation was a week ago (within a few seconds).
This bugs seems to be introduced in Debian Jessie.

Debian Wheezy stored only the date of the last rotation in the
logrotate status file (/var/lib/logrotate/status) like:
  "/var/log/syslog" 2016-5-29
The "hour", "minutes" and "seconds" were initialized as 0 when the
status file was read. This pins the timestamp of the last rotation
effectively at 12:00:00 AM.

Debian Jessie stores the full date and time:
  "/var/log/syslog" 2016-5-29-6:25:4
and checks for weekly rotation if the last rotation was more than
(7 * 24 * 3600) seconds ago.
This check fails occasionally due to some jitter in the exact moment
that logrotate is started.

The patch below should fix this. (untested)

$ diff -u logrotate.c.original logrotate.c
--- logrotate.c.original        2016-05-29 17:32:06.954792359 +0200
+++ logrotate.c 2016-05-29 17:39:56.674758835 +0200
@@ -856,12 +856,13 @@
               1) the current weekday is before the weekday of the
               last rotation
               2) more then a week has passed since the last
-              rotation */
+              rotation. Allow some jitter in the time - 60 seconds
+              should be sufficient and harmless. */
            state->doRotate = ((now.tm_wday < state->lastRotated.tm_wday)
                               ||
                               ((mktime(&now) -
                                 mktime(&state->lastRotated)) >
-                               (7 * 24 * 3600)));
+                               (7 * 24 * 3600 - 60)));
            break;
        case ROT_HOURLY:
            state->doRotate = ((now.tm_hour != state->lastRotated.tm_hour) ||



Regards,

Kees Theunissen.



-- Package-specific info:
Contents of /etc/logrotate.d
total 32
-rw-r--r-- 1 root root 173 Apr 13  2015 apt
-rw-r--r-- 1 root root  79 Nov  8  2014 aptitude
-rw-r--r-- 1 root root 382 Mar 10 05:06 clamav-daemon
-rw-r--r-- 1 root root 409 Mar 10 05:06 clamav-freshclam
-rw-r--r-- 1 root root 139 Jan 15  2014 clamav-unofficial-sigs
-rw-r--r-- 1 root root 232 Apr 10  2015 dpkg
-rw-r--r-- 1 root root 140 Oct 16  2014 mimedefang
-rw-r--r-- 1 root root 515 Oct  2  2014 rsyslog


-- System Information:
Debian Release: 8.4
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 3.16.0-4-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages logrotate depends on:
ii  base-passwd         3.5.37
ii  cron [cron-daemon]  3.0pl1-127+deb8u1
ii  libacl1             2.2.52-2
ii  libc6               2.19-18+deb8u4
ii  libpopt0            1.16-10
ii  libselinux1         2.3-2

Versions of packages logrotate recommends:
ii  bsd-mailx [mailx]  8.1.2-0.20141216cvs-2

logrotate suggests no packages.

-- no debconf information

Reply via email to