- update to /etc/init.d/apache2: handle reload with deleted
binaries after package update more thoughtfully: If the binaries have been replaced, then a dlopen(3) on the apache modules is prone to fail. => Don't reload then, but complain and fail. Especially important for logrotate! OBS-URL: https://build.opensuse.org/package/show/Apache/apache2?expand=0&rev=350
This commit is contained in:
parent
8015fbf1a2
commit
1ee79ea228
@ -1,3 +1,12 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Nov 18 15:04:12 CET 2011 - draht@suse.de
|
||||||
|
|
||||||
|
- update to /etc/init.d/apache2: handle reload with deleted
|
||||||
|
binaries after package update more thoughtfully: If the binaries
|
||||||
|
have been replaced, then a dlopen(3) on the apache modules is
|
||||||
|
prone to fail. => Don't reload then, but complain and fail.
|
||||||
|
Especially important for logrotate!
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Oct 7 17:11:56 CEST 2011 - draht@suse.de
|
Fri Oct 7 17:11:56 CEST 2011 - draht@suse.de
|
||||||
|
|
||||||
|
26
rc.apache2
26
rc.apache2
@ -6,8 +6,8 @@
|
|||||||
# Copyright (c) 2004(?), 2005, 2006, 2007, 2008 SUSE Linux Products GmbH
|
# Copyright (c) 2004(?), 2005, 2006, 2007, 2008 SUSE Linux Products GmbH
|
||||||
#
|
#
|
||||||
# Authors: Rolf Haberrecker <apache@suse.de>, 2001
|
# Authors: Rolf Haberrecker <apache@suse.de>, 2001
|
||||||
# Peter Poeml <apache@suse.de>, 2002, 2003, 2004, 2005, 2006, 2007,
|
# Peter Poeml <apache@suse.de>, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011.
|
||||||
# 2008, 2009, 2010
|
# Roman Drahtmueller <draht@suse.de>, 2010, 2011, 2012.
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# /etc/init.d/apache2
|
# /etc/init.d/apache2
|
||||||
@ -162,6 +162,8 @@ case "$action" in
|
|||||||
echo -n "(not running)"
|
echo -n "(not running)"
|
||||||
else
|
else
|
||||||
pid=$(<$pidfile)
|
pid=$(<$pidfile)
|
||||||
|
# re-read exe symlink, it could be (deleted) in the meanwhile.
|
||||||
|
apache_bin=$(readlink /proc/$pid/exe 2>/dev/null)
|
||||||
kill -TERM $pid 2>/dev/null
|
kill -TERM $pid 2>/dev/null
|
||||||
case $? in
|
case $? in
|
||||||
1) echo -n "(not running)";;
|
1) echo -n "(not running)";;
|
||||||
@ -175,7 +177,7 @@ case "$action" in
|
|||||||
if ! test -f /proc/$pid/exe; then
|
if ! test -f /proc/$pid/exe; then
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
if test "$(readlink /proc/$pid/exe 2>/dev/null)" = $apache_bin; then
|
if test "$(readlink /proc/$pid/exe 2>/dev/null)" = "$apache_bin"; then
|
||||||
usleep 500000
|
usleep 500000
|
||||||
else
|
else
|
||||||
break
|
break
|
||||||
@ -261,7 +263,25 @@ case "$action" in
|
|||||||
rc_status
|
rc_status
|
||||||
;;
|
;;
|
||||||
reload|force-reload|graceful)
|
reload|force-reload|graceful)
|
||||||
|
# check if there is a deleted binary. If there is, then logrotate
|
||||||
|
# or other occasions will fail to reload, as dlopen(3) of apache
|
||||||
|
# modules is prone to fail due to symbol mismatches.
|
||||||
|
# in this case, we only complain and fail.
|
||||||
|
if [ ! -f $pidfile -a -f $pidfile.rpmsave ]; then mv $pidfile.rpmsave $pidfile; fi
|
||||||
|
executable=$( readlink /proc/$(cat $pidfile)/exe 2> /dev/null )
|
||||||
|
case "$executable" in
|
||||||
|
*httpd*delete*)
|
||||||
|
echo -n "Reload httpd2 after package update: ignoring request. Please do a manual restart explicitly! "
|
||||||
|
rc_failed 1
|
||||||
|
rc_status -v
|
||||||
|
rc_exit
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
echo -n "Reload httpd2 (graceful restart)"
|
echo -n "Reload httpd2 (graceful restart)"
|
||||||
|
|
||||||
cmdline=$(echo $apache_bin -f $httpd_conf $server_flags "$@")
|
cmdline=$(echo $apache_bin -f $httpd_conf $server_flags "$@")
|
||||||
if eval $cmdline -t &> $logdir/rc$pname.out; then
|
if eval $cmdline -t &> $logdir/rc$pname.out; then
|
||||||
killproc -USR1 $apache_bin || return=$rc_failed
|
killproc -USR1 $apache_bin || return=$rc_failed
|
||||||
|
Loading…
Reference in New Issue
Block a user