Cleanup spec

Fix shutdown for redis-{server,sentinel}
Backport fixes from Remi Collet repository
Drop unused patch
This commit is contained in:
Haïkel Guémar 2014-09-11 21:40:02 +02:00
parent 071a048ef0
commit bfae9dba22
7 changed files with 66 additions and 184 deletions

View File

@ -1,54 +0,0 @@
Index: redis-2.8.11/redis.conf
===================================================================
--- redis-2.8.11.orig/redis.conf
+++ redis-2.8.11/redis.conf
@@ -34,11 +34,11 @@
# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
-daemonize no
+daemonize yes
# When running daemonized, Redis writes a pid file in /var/run/redis.pid by
# default. You can specify a custom pid file location here.
-pidfile /var/run/redis.pid
+pidfile /var/run/redis/redis.pid
# Accept connections on the specified port, default is 6379.
# If port 0 is specified Redis will not listen on a TCP socket.
@@ -61,7 +61,7 @@ tcp-backlog 511
# Examples:
#
# bind 192.168.1.100 10.0.0.1
-# bind 127.0.0.1
+bind 127.0.0.1
# Specify the path for the Unix socket that will be used to listen for
# incoming connections. There is no default, so Redis will not listen
@@ -87,7 +87,7 @@ timeout 0
# On other kernels the period depends on the kernel configuration.
#
# A reasonable value for this option is 60 seconds.
-tcp-keepalive 0
+tcp-keepalive 60
# Specify the server verbosity level.
# This can be one of:
@@ -100,7 +100,7 @@ loglevel notice
# Specify the log file name. Also the empty string can be used to force
# Redis to log on the standard output. Note that if you use standard
# output for logging but daemonize, logs will be sent to /dev/null
-logfile ""
+logfile /var/log/redis/redis.log
# To enable logging to the system logger, just set 'syslog-enabled' to yes,
# and optionally update the other syslog parameters to suit your needs.
@@ -184,7 +184,7 @@ dbfilename dump.rdb
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
-dir ./
+dir /var/lib/redis/
################################# REPLICATION #################################

View File

@ -4,8 +4,8 @@ After=network.target
[Service] [Service]
ExecStartPre=/usr/bin/mkdir -p /var/lib/redis ExecStartPre=/usr/bin/mkdir -p /var/lib/redis
ExecStart=/usr/bin/redis-sentinel /etc/sentinel.conf ExecStart=/usr/bin/redis-sentinel /etc/redis-sentinel.conf
ExecStop=/usr/bin/redis-cli shutdown ExecStop=/usr/bin/redis-shutdown sentinel
User=redis User=redis
Group=redis Group=redis

View File

@ -1,93 +0,0 @@
#!/bin/sh
#
# redis init file for starting up the redis daemon
#
# chkconfig: - 20 80
# description: Starts and stops the redis daemon.
# Source function library.
. /etc/rc.d/init.d/functions
NAME="redis-server"
EXEC="/usr/bin/$NAME"
REDIS_CONFIG="/etc/redis.conf"
RUNDIR="/var/run/redis"
PIDFILE="$RUNDIR/redis.pid"
[ -e /etc/sysconfig/redis ] && . /etc/sysconfig/redis
lockfile=/var/lock/subsys/redis
start() {
[ -f $REDIS_CONFIG ] || exit 6
[ -x $EXEC ] || exit 5
echo -n $"Starting $NAME: "
mkdir -p $RUNDIR
touch $PIDFILE
chown redis:redis $RUNDIR $PIDFILE
chmod 750 $RUNDIR
daemon --user ${REDIS_USER-redis} "$EXEC $REDIS_CONFIG"
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $NAME: "
killproc -p $PIDFILE $NAME
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
stop
start
}
reload() {
false
}
rh_status() {
status -p $PIDFILE $NAME
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart}"
exit 2
esac
exit $?

View File

@ -1,13 +0,0 @@
[Unit]
Description=Redis persistent key-value database
After=network.target
[Service]
ExecStartPre=/usr/bin/mkdir -p /var/lib/redis
ExecStart=/usr/bin/redis-server /etc/redis.conf
ExecStop=/usr/bin/redis-cli shutdown
User=redis
Group=redis
[Install]
WantedBy=multi-user.target

28
redis-shutdown Normal file
View File

@ -0,0 +1,28 @@
#! /bin/bash
#
# Wrapper to close properly redis and sentinel
test x"REDIS_DEBUG" != x && set -x
REDIS_CLI=/usr/bin/redis-cli
# Retrieve service name
SERVICE_NAME="$2"
if [ -z "$SERVICE_NAME" ]; then
SERVICE_NAME=redis
fi
# Get the proper config file based on service name
CONFIG_FILE="/etc/$SERVICE_NAME.conf"
# Use awk to retrieve port from config file
PORT=`awk '/^[[:blank:]]*port/ { print $2 }' $CONFIG_FILE`
# Just in case, use default port
if [ "$SERVICE_NAME" = redis ]; then
PORT=${PORT:-6279}
else
PORT=${PORT:-26739}
fi
# shutdown the service properly
$REDIS_CLI -p $PORT shutdown

View File

@ -4,6 +4,7 @@ After=network.target
[Service] [Service]
ExecStart=/usr/bin/redis-server /etc/redis.conf --daemonize no ExecStart=/usr/bin/redis-server /etc/redis.conf --daemonize no
ExecStop=/usr/bin/redis-shutdown
User=redis User=redis
Group=redis Group=redis

View File

@ -1,5 +1,4 @@
%global _hardened_build 1 %global _hardened_build 1
%global with_perftools 0 %global with_perftools 0
# redis 2.8 sentinel is the first upstream version to work # redis 2.8 sentinel is the first upstream version to work
@ -15,17 +14,13 @@
%global with_systemd 0 %global with_systemd 0
%endif %endif
# tcl 8.4 in EL5. # Tests fail in mock, not in local build.
%if 0%{?el5} %global with_tests %{?_with_tests:1}%{!?_with_tests:0}
%global with_tests 0
%else
%global with_tests 1
%endif
Name: redis Name: redis
Version: 2.8.14 Version: 2.8.14
Release: 1%{?dist} Release: 2%{?dist}
Summary: A persistent caching system, key-value and data structures database Summary: A persistent key-value database
License: BSD License: BSD
URL: http://redis.io URL: http://redis.io
Source0: http://download.redis.io/releases/%{name}-%{version}.tar.gz Source0: http://download.redis.io/releases/%{name}-%{version}.tar.gz
@ -35,6 +30,7 @@ Source3: %{name}.service
Source4: %{name}.tmpfiles Source4: %{name}.tmpfiles
Source5: %{name}-sentinel.init Source5: %{name}-sentinel.init
Source6: %{name}.init Source6: %{name}.init
Source7: %{name}-shutdown
# Update configuration for Fedora # Update configuration for Fedora
Patch0: redis-2.8.11-redis-conf.patch Patch0: redis-2.8.11-redis-conf.patch
Patch1: redis-2.8.11-deps-library-fPIC-performance-tuning.patch Patch1: redis-2.8.11-deps-library-fPIC-performance-tuning.patch
@ -55,6 +51,8 @@ BuildRequires: systemd
%if 0%{?with_tests} %if 0%{?with_tests}
BuildRequires: tcl BuildRequires: tcl
%endif %endif
# Required for redis-shutdown
Requires: /bin/awk
Requires: logrotate Requires: logrotate
Requires(pre): shadow-utils Requires(pre): shadow-utils
%if 0%{?with_systemd} %if 0%{?with_systemd}
@ -165,6 +163,13 @@ install -pDm755 %{S:6} %{buildroot}%{_initrddir}/%{name}
# Fix non-standard-executable-perm error. # Fix non-standard-executable-perm error.
chmod 755 %{buildroot}%{_bindir}/%{name}-* chmod 755 %{buildroot}%{_bindir}/%{name}-*
# create redis-sentinel command as described on
# http://redis.io/topics/sentinel
ln -s %{name}-server %{buildroot}%{_bindir}/%{name}-sentinel
# Install redis-shutdown
install -pDm755 %{S:7} %{buildroot}%{_bindir}/%{name}-shutdown
%check %check
%if 0%{?with_tests} %if 0%{?with_tests}
make test ||: make test ||:
@ -174,7 +179,8 @@ make test-sentinel ||:
%endif %endif
%pre %pre
getent group %{name} &> /dev/null || groupadd -r %{name} &> /dev/null getent group %{name} &> /dev/null || \
groupadd -r %{name} &> /dev/null
getent passwd %{name} &> /dev/null || \ getent passwd %{name} &> /dev/null || \
useradd -r -g %{name} -d %{_sharedstatedir}/%{name} -s /sbin/nologin \ useradd -r -g %{name} -d %{_sharedstatedir}/%{name} -s /sbin/nologin \
-c 'Redis Database Server' %{name} &> /dev/null -c 'Redis Database Server' %{name} &> /dev/null
@ -182,54 +188,56 @@ exit 0
%post %post
%if 0%{?with_systemd} %if 0%{?with_systemd}
%systemd_post %{name}.service
%if 0%{?with_sentinel} %if 0%{?with_sentinel}
%systemd_post %{name}-sentinel.service %systemd_post %{name}-sentinel.service
%endif %endif
%systemd_post %{name}.service
%else %else
chkconfig --add %{name}
%if 0%{?with_sentinel} %if 0%{?with_sentinel}
chkconfig --add %{name}-sentinel chkconfig --add %{name}-sentinel
%endif %endif
chkconfig --add %{name}
%endif %endif
%preun %preun
%if 0%{?with_systemd} %if 0%{?with_systemd}
%systemd_preun %{name}.service
%if 0%{?with_sentinel} %if 0%{?with_sentinel}
%systemd_preun %{name}-sentinel.service %systemd_preun %{name}-sentinel.service
%endif %endif
%systemd_preun %{name}.service
%else %else
if [ $1 -eq 0 ] ; then if [ $1 -eq 0 ] ; then
service %{name} stop &> /dev/null
chkconfig --del %{name} &> /dev/null
%if 0%{?with_sentinel} %if 0%{?with_sentinel}
service %{name}-sentinel stop &> /dev/null service %{name}-sentinel stop &> /dev/null
chkconfig --del %{name}-sentinel &> /dev/null chkconfig --del %{name}-sentinel &> /dev/null
%endif %endif
service %{name} stop &> /dev/null
chkconfig --del %{name} &> /dev/null
%endif %endif
%postun %postun
%if 0%{?with_systemd} %if 0%{?with_systemd}
%systemd_postun_with_restart %{name}.service
%if 0%{?with_sentinel} %if 0%{?with_sentinel}
%systemd_postun_with_restart %{name}-sentinel.service %systemd_postun_with_restart %{name}-sentinel.service
%endif %endif
%systemd_postun_with_restart %{name}.service
%else %else
if [ "$1" -ge "1" ] ; then if [ "$1" -ge "1" ] ; then
service %{name} condrestart >/dev/null 2>&1 || :
%if 0%{?with_sentinel} %if 0%{?with_sentinel}
service %{name}-sentinel condrestart >/dev/null 2>&1 || : service %{name}-sentinel condrestart >/dev/null 2>&1 || :
%endif %endif
service %{name} condrestart >/dev/null 2>&1 || :
fi fi
%endif %endif
%files %files
%doc 00-RELEASENOTES BUGS CONTRIBUTING COPYING MANIFESTO README %{!?_licensedir:%global license %%doc}
%license COPYING
%doc 00-RELEASENOTES BUGS CONTRIBUTING MANIFESTO README
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name} %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%config(noreplace) %{_sysconfdir}/%{name}.conf %attr(0644, redis, root) %config(noreplace) %{_sysconfdir}/%{name}.conf
%if 0%{?with_sentinel} %if 0%{?with_sentinel}
%config(noreplace) %{_sysconfdir}/%{name}-sentinel.conf %attr(0644, redis, root) %config(noreplace) %{_sysconfdir}/%{name}-sentinel.conf
%endif %endif
%dir %attr(0750, redis, redis) %{_sharedstatedir}/%{name} %dir %attr(0750, redis, redis) %{_sharedstatedir}/%{name}
%dir %attr(0750, redis, redis) %{_localstatedir}/log/%{name} %dir %attr(0750, redis, redis) %{_localstatedir}/log/%{name}
@ -237,18 +245,23 @@ fi
%{_bindir}/%{name}-* %{_bindir}/%{name}-*
%if 0%{?with_systemd} %if 0%{?with_systemd}
%{_tmpfilesdir}/%{name}.conf %{_tmpfilesdir}/%{name}.conf
%{_unitdir}/%{name}.service
%if 0%{?with_sentinel} %if 0%{?with_sentinel}
%{_unitdir}/%{name}-sentinel.service %{_unitdir}/%{name}-sentinel.service
%endif %endif
%{_unitdir}/%{name}.service
%else %else
%{_initrddir}/%{name}
%if 0%{?with_sentinel} %if 0%{?with_sentinel}
%{_initrddir}/%{name}-sentinel %{_initrddir}/%{name}-sentinel
%endif %endif
%{_initrddir}/%{name}
%endif %endif
%changelog %changelog
* Thu Sep 11 2014 Haïkel Guémar <hguemar@fedoraproject.org> - 2.8.14-2
- Cleanup spec
- Fix shutdown for redis-{server,sentinel}
- Backport fixes from Remi Collet repository (ie: sentinel working)
* Thu Sep 11 2014 Haïkel Guémar <hguemar@fedoraproject.org> - 2.8.14-1 * Thu Sep 11 2014 Haïkel Guémar <hguemar@fedoraproject.org> - 2.8.14-1
- Upstream 2.8.14 (RHBZ #1136287) - Upstream 2.8.14 (RHBZ #1136287)
- Bugfix for lua scripting users (server crash) - Bugfix for lua scripting users (server crash)