diff options
author | Thomas Oettli <spacefreak@noop.ch> | 2018-02-07 11:07:26 +0100 |
---|---|---|
committer | Matthew Thode <prometheanfire@gentoo.org> | 2018-04-20 21:22:44 -0500 |
commit | ba9cc71a1a5b0f48768f01f190c73fd14f47baf4 (patch) | |
tree | 953a8d474bcbd3d03098e0026cd2a256ad811524 /sys-cluster/heartbeat/files | |
parent | dev-php/PEAR-Mail: Stable 1.4.1-r1; drop old (diff) | |
download | gentoo-ba9cc71a1a5b0f48768f01f190c73fd14f47baf4.tar.gz gentoo-ba9cc71a1a5b0f48768f01f190c73fd14f47baf4.tar.bz2 gentoo-ba9cc71a1a5b0f48768f01f190c73fd14f47baf4.zip |
sys-cluster/heartbeat: Critical bugfixes #648336
Heartbeat restarts itself after returning from partition (split-brain).
Due to a bug in 3.0.6-configure.patch, the daemon died instead.
The init-script was totally broken, some rework was needed.
Closes: https://bugs.gentoo.org/648336
Package-Manager: Portage-2.3.19, Repoman-2.3.6
Signed-off-by: Matthew Thode <prometheanfire@gentoo.org>
Diffstat (limited to 'sys-cluster/heartbeat/files')
-rw-r--r-- | sys-cluster/heartbeat/files/3.0.6-r1-configure.patch | 102 | ||||
-rw-r--r-- | sys-cluster/heartbeat/files/3.0.6-r1-heartbeat-init | 95 |
2 files changed, 197 insertions, 0 deletions
diff --git a/sys-cluster/heartbeat/files/3.0.6-r1-configure.patch b/sys-cluster/heartbeat/files/3.0.6-r1-configure.patch new file mode 100644 index 000000000000..ab24282e4208 --- /dev/null +++ b/sys-cluster/heartbeat/files/3.0.6-r1-configure.patch @@ -0,0 +1,102 @@ +diff -ru a/configure.ac b/configure.ac +--- a/configure.ac 2015-02-04 15:57:04.000000000 +0100 ++++ b/configure.ac 2017-04-25 13:33:58.668521006 +0200 +@@ -243,9 +243,9 @@ + mandir=`var "$mandir" "$exec_prefix/man"` + dnl docdir is available in autoconf 2.60+, for older versions preseed + dnl with the same value that 2.60+ uses +-docdir=`var "$docdir" "${datadir}/doc/${HB_PKG}"` +-libdir=`var "$libdir" "$exec_prefix/lib"` ++dnl docdir=`var "$docdir" "${datadir}/doc/${PACKAGE_NAME}"` ++dnl libdir=`var "$libdir" "$exec_prefix/lib"` + libexecdir=`var "$libexecdir" "$exec_prefix/libexec"` + noarchlibdir=`var "$noarchlibdir" "$prefix/lib"` + + +@@ -284,53 +284,12 @@ + LIBC=`${LDD} ${tmpOutfile} | grep libc | sed -e 's%.*=> *%%' -e 's% .*$%%'` + LibCdir=`dirname $LIBC` + dirlist=`echo $LibCdir | tr '/' ' '` +- LibDirSuffix=unknown +- for dir in $dirlist +- do +- case $dir in +- *lib*) LibDirSuffix=$dir; break;; +- *);; +- esac +- done +- case $LibDirSuffix in +- unknown) LibDirSuffix=`basename $LibCdir`;; +- esac + OutFileType=`file $tmpOutfile` + rm -f $tmpCfile $tmpOutfile + else + AC_MSG_ERROR([Cannot Compile trivial C program]) + fi +-# +-# The code above doesn't work right everywhere +-# (like Fedora and OpenBSD) +-# +-case ${LibDirSuffix} in +- *lib*) : Cool;; +- *) : Sigh... +- case $OutFileType in +- *64-bit*) +- case $host_os in +- openbsd*) LibDirSuffix=lib;; +- *) LibDirSuffix=lib64;; +- esac;; +- *32-bit*) LibDirSuffix=lib;; +- *) LibDirSuffix=lib;; +- esac;; +-esac +-# +-# This may not yet be quite right for PPC where the default +-# is to produce 32-bit binaries, even though the OS is 64-bit +-# or for that matter for system Z, But, it's a lot better than +-# it used to be. +-# +-AC_MSG_RESULT($LibDirSuffix) + +-case $libdir in +- */*${LibDirSuffix}) : Cool ;; +- *) : Uh Oh... +- libdir=`dirname $libdir`/$LibDirSuffix +- AC_MSG_WARN([Overriding libdir to: $libdir]);; +-esac + for j in exec_prefix bindir sbindir datadir sysconfdir localstatedir \ + includedir oldincludedir mandir docdir stdocdir libdir noarchlibdir + do +@@ -379,7 +338,6 @@ + fi + + AC_CHECK_HEADERS(heartbeat/glue_config.h) +-GLUE_HEADER=none + if test "$ac_cv_header_heartbeat_glue_config_h" = "yes"; then + GLUE_HEADER=heartbeat/glue_config.h + else +@@ -463,15 +421,6 @@ + + dnl We use this in the RPM specfile... + AC_SUBST(ac_configure_args) +-cleaned_configure_args="" +-for j in ${ac_configure_args} +-do +- case $j in +- *--libdir=*|*--libexecdir=*) ;; +- *) cleaned_configure_args="$cleaned_configure_args $j";; +- esac +-done +-AC_SUBST(cleaned_configure_args) + + dnl ************************************************************************* + PATH="$PATH:/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin" +@@ -2087,7 +2036,7 @@ + fi + + if test "$GCC" = yes; then +- CFLAGS="$CFLAGS -ggdb3" ++ CFLAGS="$CFLAGS" + if + cc_supports_flag -funsigned-char + then diff --git a/sys-cluster/heartbeat/files/3.0.6-r1-heartbeat-init b/sys-cluster/heartbeat/files/3.0.6-r1-heartbeat-init new file mode 100644 index 000000000000..5e15b322f503 --- /dev/null +++ b/sys-cluster/heartbeat/files/3.0.6-r1-heartbeat-init @@ -0,0 +1,95 @@ +#!/sbin/openrc-run +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +HA_DIR=/etc/ha.d +. $HA_DIR/shellfuncs +HA_DAEMON_DIR=/usr/libexec/heartbeat +HA_LIB_DIR=/usr/lib/heartbeat +HA_SHARE_DIR=/usr/share/heartbeat + +depend() { + use logger + need net +} + +opts="start stop status reload restart" + +CheckBool() { + case `echo "$1" | tr A-Z a-z` in + y|yes|enable|on|true|1) true;; + *) false;; + esac +} + +# Run pre-startup script if it exists +RunStartStop() { + [ -f $HA_DIR/resource.d/startstop ] && $HA_DIR/resource.d/startstop "$@" +} + +start() { + checkpath -q -d -m 0755 -o root:root /var/run/heartbeat + + ebegin "Starting heartbeat" + + . $HA_DIR/shellfuncs + + # start the log subsystem + CheckBool "`ha_parameter use_logd`" && \ + ( ${HA_LIB_DIR}/ha_logd -s &>/dev/null || \ + ${HA_LIB_DIR}/ha_logd -d -c /etc/ha.d/ha_logd.cf) + + RunStartStop pre-start + + CheckBool "`ha_parameter crm`" || \ + ${HA_SHARE_DIR}/ResourceManager verifyallidle + + ${HA_DAEMON_DIR}/heartbeat &>/dev/null + ret=$? + + RunStartStop post-start + + eend ${ret} +} + +stop() { + ebegin "Stopping heartbeat" + + RunStartStop pre-stop + + ${HA_DAEMON_DIR}/heartbeat -k &>/dev/null + ret=$? + + RunStartStop post-stop ${ret} + + # stop log subsystem + CheckBool "`ha_parameter use_logd`" && \ + ( ${HA_LIB_DIR}/ha_logd -s &>/dev/null && \ + ${HA_LIB_DIR}/ha_logd -k &>/dev/null ) + + eend ${ret} +} + +status() { + ${HA_DAEMON_DIR}/heartbeat -s +} + +reload() { + ebegin "Reloading heartbeat" + ${HA_DAEMON_DIR}/heartbeat -r &>/dev/null + eend $? +} + +restart() { + . $HA_DIR/shellfuncs + + sleeptime=$(( `ha_parameter deadtime` + 10 )) + + svc_stop + + ebegin " waiting ${sleeptime}s to allow resource takeover to complete" + sleep ${sleeptime} + eend 0 + + svc_start +} |