Use copytruncate method for logrotate

This commit is contained in:
Jan Friesse 2022-03-30 16:54:41 +02:00
parent e2d21ef166
commit 6d8d5bd0e7
2 changed files with 67 additions and 1 deletions

View File

@ -18,11 +18,13 @@
Name: corosync Name: corosync
Summary: The Corosync Cluster Engine and Application Programming Interfaces Summary: The Corosync Cluster Engine and Application Programming Interfaces
Version: 3.1.6 Version: 3.1.6
Release: 2%{?gitver}%{?dist} Release: 3%{?gitver}%{?dist}
License: BSD License: BSD
URL: http://corosync.github.io/corosync/ URL: http://corosync.github.io/corosync/
Source0: http://build.clusterlabs.org/corosync/releases/%{name}-%{version}%{?gittarver}.tar.gz Source0: http://build.clusterlabs.org/corosync/releases/%{name}-%{version}%{?gittarver}.tar.gz
Patch0: logrotate-Use-copytruncate-method-by-default.patch
# Runtime bits # Runtime bits
# The automatic dependency overridden in favor of explicit version lock # The automatic dependency overridden in favor of explicit version lock
Requires: corosynclib%{?_isa} = %{version}-%{release} Requires: corosynclib%{?_isa} = %{version}-%{release}
@ -71,6 +73,7 @@ BuildRequires: make
%prep %prep
%setup -q -n %{name}-%{version}%{?gittarver} %setup -q -n %{name}-%{version}%{?gittarver}
%patch0 -p1
%build %build
%if %{with runautogen} %if %{with runautogen}
@ -289,6 +292,9 @@ network splits)
%endif %endif
%changelog %changelog
* Wed Mar 30 2022 Jan Friesse <jfriesse@redhat.com> - 3.1.6-3
- Use copytruncate method for logrotate
* Wed Jan 19 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.6-2 * Wed Jan 19 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.6-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild

View File

@ -0,0 +1,60 @@
From 04362046c4a9d7307feb5b68341d567b7d0b94d6 Mon Sep 17 00:00:00 2001
From: Jan Friesse <jfriesse@redhat.com>
Date: Tue, 29 Mar 2022 17:09:22 +0200
Subject: [PATCH] logrotate: Use copytruncate method by default
The reopen lograte method has two main problems:
1. It does fail when corosync is not running (solvable by
adding "|| true")
2. If (for some reason, like SELinux) cfgtool -L fails, logrotate
fails and corosync keeps logging into old file. Added "|| true"
makes situation even worse because logrotate removes file but
corosync keeps logging into it.
Solution is to install copytruncate logrotate snip by default (and
keep reopen config file only for reference).
Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Reviewed-by: Christine Caulfield <ccaulfie@redhat.com>
---
conf/logrotate/Makefile.am | 7 -------
conf/logrotate/corosync-reopen.in | 5 +++++
2 files changed, 5 insertions(+), 7 deletions(-)
diff --git a/conf/logrotate/Makefile.am b/conf/logrotate/Makefile.am
index 4f7b7536..35efa2de 100644
--- a/conf/logrotate/Makefile.am
+++ b/conf/logrotate/Makefile.am
@@ -34,16 +34,9 @@ MAINTAINERCLEANFILES = Makefile.in
EXTRA_DIST = corosync-reopen.in corosync-copytruncate.in
-if HAVE_QB_LOG_FILE_REOPEN
-corosync: corosync-reopen.in
- $(SED) -e 's#@''LOGDIR@#${LOGDIR}#g' \
- -e 's#@''SBINDIR@#$(sbindir)#g' \
- $< > $@
-else
corosync: corosync-copytruncate.in
$(SED) -e 's#@''LOGDIR@#${LOGDIR}#g' \
$< > $@
-endif
logrotatecorosyncdir = ${LOGROTATEDIR}
logrotatecorosync_DATA = corosync
diff --git a/conf/logrotate/corosync-reopen.in b/conf/logrotate/corosync-reopen.in
index 839c5dae..730fb741 100644
--- a/conf/logrotate/corosync-reopen.in
+++ b/conf/logrotate/corosync-reopen.in
@@ -1,3 +1,8 @@
+# This logrotate method has two main problems and it's kept only for reference:
+# 1. It does fail when corosync is not running (solvable by adding "|| true")
+# 2. If (for some reason) cfgtool -L fails, logrotate fails and corosync keeps
+# logging into old file. Added "|| true" makes situation even worse
+# because logrotate removes file but corosync keeps logging into it.
@LOGDIR@/corosync.log {
missingok
compress
--
2.33.1