debian/0000775000000000000000000000000013114325101007157 5ustar debian/libcib3-dev.install0000664000000000000000000000017612122560772012653 0ustar usr/lib/libcib.so usr/lib/libcib.a usr/lib/libcib.la usr/include/pacemaker/crm/cib/util.h usr/lib/pkgconfig/pacemaker-cib.pc debian/liblrmd1.install0000664000000000000000000000005612176650303012272 0ustar usr/lib/liblrmd.so.1 usr/lib/liblrmd.so.1.1.1 debian/control0000664000000000000000000003535212444524104010603 0ustar Source: pacemaker Section: admin Priority: optional Maintainer: Ubuntu Developers XSBC-Original-Maintainer: Debian HA Maintainers Uploaders: Martin Loschwitz , Anibal Monsalve Salazar , Simon Horman , Frederik Schüler Build-Depends: debhelper (>= 7.0.50), automake, autoconf, chrpath, libsnmp-dev, libglib2.0-dev, perl, net-tools, python (>= 2.6.6-3~), libtool, libcurl4-openssl-dev | libcurl3-openssl-dev, libxml2-dev, bison, flex, uuid-dev, libbz2-dev, zlib1g-dev, libltdl3-dev, openssh-client, libgnutls-dev, libpam0g-dev, libncurses5-dev, libcorosync-dev (>= 1.4.4-1), libheartbeat2-dev (>= 3.0), libxslt1-dev, libesmtp-dev, cluster-glue-dev (>= 1.0.11+hg2754), liblrm2-dev, libpils2-dev, libplumb2-dev, libplumbgpl2-dev, libstonith1-dev, help2man, libxml2-utils, xsltproc, docbook-xsl, resource-agents-dev, libqb-dev (>= 0.16.0.real-1), hardening-wrapper, libcfg-dev Standards-Version: 3.9.3 Homepage: http://clusterlabs.org/ Vcs-Hg: http://hg.debian.org/hg/debian-ha/pacemaker Vcs-Browser: http://hg.debian.org/hg/debian-ha/pacemaker X-Python-Version: >= 2.5 Package: pacemaker Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${python:Depends}, libheartbeat2, resource-agents, python, adduser, corosync (>= 1.4.4-1) | heartbeat (>= 3.0), crmsh, pacemaker-cli-utils, libcib3 (= ${binary:Version}), libcrmcluster4 (= ${binary:Version}), libcrmcommon3 (= ${binary:Version}), libcrmservice1 (= ${binary:Version}), liblrmd1 (= ${binary:Version}), libpe-rules2 (= ${binary:Version}), libpe-status4 (= ${binary:Version}), libpengine4 (= ${binary:Version}), libstonithd2 (= ${binary:Version}), libtransitioner2 (= ${binary:Version}) Conflicts: pacemaker-heartbeat, pacemaker-openais Replaces: pacemaker-heartbeat, pacemaker-openais Description: HA cluster resource manager High-Availability cluster resource manager for Heartbeat as well as Corosync. . Pacemaker supports a very sophisticated dependency model for n-node clusters and can respond to node and resource-level failures. . It supports both the Heartbeat and Corosync cluster stacks. Package: pacemaker-cli-utils Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${python:Depends} Conflicts: pacemaker (<< 1.1.9+git20130321-1) Replaces: pacemaker (<< 1.1.9+git20130321-1) Description: Command line interface utilities for Pacemaker This package contains numerous command line utilities for the Pacemaker cluster manager such as crm_mon and crm_attribute. If you intend to run Pacemaker, you will definetely need them. If you plan to run pacemaker-remote, these tools will come in very handy, too. Package: pacemaker-remote Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${python:Depends}, resource-agents, python, pacemaker-cli-utils Description: Pacemaker add-on to control virtualized services Pacemaker is a cluster resource manager that allows one to manage cluster resources in a highly available manner. This version of it called pacemaker-remote can be run within virtual machines and allows their services to be controlled by the cluster-wide pacemaker instance running. . If you want to make services within your virtual machines highly available without running a separate pacemaker cluster, you will need this package. Package: pacemaker-dev Section: devel Architecture: any Replaces: pacemaker-heartbeat-dev, pacemaker-openais-dev Conflicts: pacemaker-heartbeat-dev, pacemaker-openais-dev Depends: ${shlibs:Depends}, ${misc:Depends}, pacemaker (>= ${binary:Version}), python, libcorosync-dev (>= 1.4.4-1), libheartbeat2-dev (>= 3.0) , libglib2.0-dev, libxml2-dev, libcluster-glue-dev (>= 1.0.11+hg2754), libcib3-dev (>= ${binary:Version}), libcrmcluster4-dev (>= ${binary:Version}), libcrmcommon3-dev (>= ${binary:Version}), libpe-rules2-dev (>= ${binary:Version}), libpe-status4-dev (>= ${binary:Version}), libpengine4-dev (>= ${binary:Version}), libstonithd2-dev (>= ${binary:Version}), libtransitioner2-dev (>= ${binary:Version}), liblrmd1-dev (>= ${binary:Version}), libcrmservice1-dev (>= ${binary:Version}) Description: HA cluster resource manager (development files) High-Availability cluster resource manager for Heartbeat. . Pacemaker supports a very sophisticated dependency model for n-node clusters and can respond to node and resource-level failures. . This package contains pacemaker's development files. Package: pacemaker-dbg Architecture: any Section: debug Priority: extra Depends: pacemaker (= ${binary:Version}), ${misc:Depends} Description: Debugging symbols for Pacemaker High-Availability cluster resource manager for Heartbeat as well as Corosync. . Pacemaker supports a very sophisticated dependency model for n-node clusters and can respond to node and resource-level failures. . It supports both the Heartbeat and Corosync cluster stacks. . This package contains the debugging symbols for Pacemaker. Package: libcib3-dev Architecture: any Section: libdevel Depends: ${misc:Depends}, libcib3 (= ${binary:Version}) Replaces: pacemaker-dev (<= 1.0.9.1+hg15626-2), libcib1-dev, libcib2-dev, pacemaker-dev (<< 1.1.8+git20121010-1) Conflicts: pacemaker-dev (<= 1.0.9.1+hg15626-2), libcib1-dev, libcib2-dev, pacemaker-dev (<< 1.1.8+git20121010-1) Description: Development file for pacemaker's cib library This package contains static libraries, symbol files as well as headers provided by the pacemaker cluster manager (CIB). Install it if you want to do development based on pacemaker. Package: libcib3 Architecture: any Section: libs Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: pacemaker (<= 1.0.9.1+hg15626-2), libcib1, libcib2 Conflicts: pacemaker (<= 1.0.9.1+hg15626-2), libcib1, libcib2 Description: Pacemaker libraries - CIB This package contains some of the libraries provided by and needed for the pacemaker cluster manager. You need to install them if you intend to run pacemaker. Specifically, this package contains the CIB library. Package: libcrmcluster4-dev Architecture: any Section: libdevel Depends: ${misc:Depends}, libcrmcluster4 (= ${binary:Version}) Replaces: pacemaker-dev (<= 1.0.9.1+hg15626-2), libcrmcluster1-dev, libcrmcluster2-dev Conflicts: pacemaker-dev (<= 1.0.9.1+hg15626-2), libcrmcluster1-dev, libcrmcluster2-dev Description: Development file for pacemaker's crm library This package contains static libraries, symbol files as well as headers provided by the pacemaker cluster manager (CRM). Install it if you want to do development based on pacemaker. Package: libcrmcluster4 Architecture: any Section: libs Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: pacemaker (<= 1.0.9.1+hg15626-2), libcrmcluster1, libcrmcluster2 Conflicts: pacemaker (<= 1.0.9.1+hg15626-2), libcrmcluster1, libcrmcluster2 Description: Pacemaker libraries - CRM This package contains some of the libraries provided by and needed for the pacemaker cluster manager. You need to install them if you intend to run pacemaker. Specifically, this package contains the CRM cluster library. Package: libcrmcommon3-dev Architecture: any Section: libdevel Depends: ${misc:Depends}, libcrmcommon3 (= ${binary:Version}), cluster-glue-dev (>= 1.0.11+hg2754) Replaces: pacemaker-dev (<= 1.0.9.1+hg15626-2), libcrmcommon2-dev, pacemaker-dev (<< 1.1.8+git20121010-1) Conflicts: pacemaker-dev (<= 1.0.9.1+hg15626-2), libcrmcommon2-dev, pacemaker-dev (<< 1.1.8+git20121010-1) Description: Development file for pacemaker's common library This package contains static libraries, symbol files as well as headers provided by the pacemaker cluster manager (common CRM). Install it if you want to do development based on pacemaker. Package: libcrmcommon3 Architecture: any Section: libs Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: pacemaker (<= 1.0.9.1+hg15626-2), libcrmcommon2 Conflicts: pacemaker (<= 1.0.9.1+hg15626-2), libcrmcommon2 Description: Pacemaker libraries - common CRM This package contains some of the libraries provided by and needed for the pacemaker cluster manager. You need to install them if you intend to run pacemaker. Specifically, this package contains the common CRM library. Package: libpe-rules2-dev Architecture: any Section: libdevel Depends: ${misc:Depends}, libpe-rules2 (= ${binary:Version}) Replaces: pacemaker-dev (<= 1.0.9.1+hg15626-2), libpe-rules-2-dev (<= 1.0.10-1) Conflicts: pacemaker-dev (<= 1.0.9.1+hg15626-2), libpe-rules-2-dev (<= 1.0.10-1) Description: Development file for pacemaker's rules library This package contains static libraries, symbol files as well as headers provided by the pacemaker cluster manager (pengine rules). Install it if you want to do development based on pacemaker. Package: libpe-rules2 Architecture: any Section: libs Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: pacemaker (<= 1.0.9.1+hg15626-2), libpe-rules-2 (<= 1.0.10-1) Conflicts: pacemaker (<= 1.0.9.1+hg15626-2), libpe-rules-2 (<= 1.0.10-1) Description: Pacemaker libraries - rules for P-Engine This package contains some of the libraries provided by and needed for the pacemaker cluster manager. You need to install them if you intend to run pacemaker. Specifically, this package contains the PEngine rules library. Package: libpe-status4-dev Architecture: any Section: libdevel Depends: ${misc:Depends}, libpe-status4 (= ${binary:Version}) Replaces: pacemaker-dev (<= 1.0.9.1+hg15626-2), libpe-status-2-dev (<= 1.0.10-1), libpe-status2-dev, libpe-status3-dev Conflicts: pacemaker-dev (<= 1.0.9.1+hg15626-2), libpe-status-2-dev (<= 1.0.10-1), libpe-status2-dev, libpe-status3-dev Description: Development file for pacemaker's status library This package contains static libraries, symbol files as well as headers provided by the pacemaker cluster manager (pengine status). Install it if you want to do development based on pacemaker. Package: libpe-status4 Architecture: any Section: libs Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: pacemaker (<= 1.0.9.1+hg15626-2), libpe-status-2 (<= 1.0.10-1), libpe-status3 Conflicts: pacemaker (<= 1.0.9.1+hg15626-2), libpe-status-2 (<= 1.0.10-1), libpe-status3 Description: Pacemaker libraries - status for P-Engine This package contains some of the libraries provided by and needed for the pacemaker cluster manager. You need to install them if you intend to run pacemaker. Specifically, this package contains the PEngine status library. Package: libpengine4-dev Architecture: any Section: libdevel Depends: ${misc:Depends}, libpengine4 (= ${binary:Version}) Replaces: pacemaker-dev (<= 1.0.9.1+hg15626-2), libpengine3-dev Conflicts: pacemaker-dev (<= 1.0.9.1+hg15626-2), libpengine3-dev Description: Development file for pacemaker's pengine library This package contains static libraries, symbol files as well as headers provided by the pacemaker cluster manager (pengine). Install it if you want to do development based on pacemaker. Package: libpengine4 Architecture: any Section: libs Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: pacemaker (<= 1.0.9.1+hg15626-2), libpengine3, pacemaker-dev (<< 1.1.8+git20121010-1) Conflicts: pacemaker (<= 1.0.9.1+hg15626-2), libpengine3, pacemaker-dev (<< 1.1.8+git20121010-1) Description: Pacemaker libraries - P-Engine This package contains some of the libraries provided by and needed for the pacemaker cluster manager. You need to install them if you intend to run pacemaker. Specifically, this package contains the PEngine library. Package: libstonithd2-dev Architecture: any Section: libdevel Depends: ${misc:Depends}, libstonithd2 (= ${binary:Version}) Replaces: pacemaker-dev (<= 1.0.9.1+hg15626-2), libstonithd0-dev Conflicts: pacemaker-dev (<= 1.0.9.1+hg15626-2), libstonithd0-dev Description: Development file for pacemaker's stonith library This package contains static libraries, symbol files as well as headers provided by the pacemaker cluster manager (stonith). Install it if you want to do development based on pacemaker. Package: libstonithd2 Architecture: any Section: libs Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: pacemaker (<= 1.0.9.1+hg15626-2), libstonithd0 Conflicts: pacemaker (<= 1.0.9.1+hg15626-2), libstonithd0 Description: Pacemaker libraries - stonith This package contains some of the libraries provided by and needed for the pacemaker cluster manager. You need to install them if you intend to run pacemaker. Specifically, this package contains the stonith library. Package: libtransitioner2-dev Architecture: any Section: libdevel Depends: ${misc:Depends}, libtransitioner2 (= ${binary:Version}) Replaces: pacemaker-dev (<= 1.0.9.1+hg15626-2), libtransitioner1-dev Conflicts: pacemaker-dev (<= 1.0.9.1+hg15626-2), libtransitioner1-dev Description: Development file for pacemaker's transitioner library This package contains static libraries, symbol files as well as headers provided by the pacemaker cluster manager (transitioner). Install it if you want to do development based on pacemaker. Package: libtransitioner2 Architecture: any Section: libs Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: pacemaker (<= 1.0.9.1+hg15626-2), libtransitioner1 Conflicts: pacemaker (<= 1.0.9.1+hg15626-2), libtransitioner1 Description: Pacemaker libraries - transitioner This package contains some of the libraries provided by and needed for the pacemaker cluster manager. You need to install them if you intend to run pacemaker. Specifically, this package contains the transitioner library. Package: liblrmd1-dev Architecture: any Section: libdevel Depends: ${misc:Depends}, liblrmd1 (= ${binary:Version}) Description: Development file for pacemaker's lrmd library This package contains static libraries, symbol files as well as headers provided by the pacemaker cluster manager (lrmd). Install it if you want to do development based on pacemaker. Package: liblrmd1 Architecture: any Section: libs Depends: ${shlibs:Depends}, ${misc:Depends} Description: Pacemaker libraries - lrmd This package contains some of the libraries provided by and needed for the pacemaker cluster manager. You need to install them if you intend to run pacemaker. Specifically, this package contains the lrmd library. Package: libcrmservice1-dev Architecture: any Section: libdevel Depends: ${misc:Depends}, libcrmservice1 (= ${binary:Version}) Description: Development file for pacemaker's crmservice library This package contains static libraries, symbol files as well as headers provided by the pacemaker cluster manager (crmservice). Install it if you want to do development based on pacemaker. Package: libcrmservice1 Architecture: any Section: libs Depends: ${shlibs:Depends}, ${misc:Depends} Description: Pacemaker libraries - crmservice This package contains some of the libraries provided by and needed for the pacemaker cluster manager. You need to install them if you intend to run pacemaker. Specifically, this package contains the crmservice library. debian/libstonithd2-dev.install0000664000000000000000000000010411571740662013745 0ustar usr/lib/libstonithd.so usr/lib/libstonithd.a usr/lib/libstonithd.la debian/libcrmservice1.install0000664000000000000000000000007212035023660013466 0ustar usr/lib/libcrmservice.so.1 usr/lib/libcrmservice.so.1.0.0 debian/libcrmcommon3.install0000664000000000000000000000007012176650045013327 0ustar usr/lib/libcrmcommon.so.3 usr/lib/libcrmcommon.so.3.2.0 debian/libpengine4.install0000664000000000000000000000006412176650145012767 0ustar usr/lib/libpengine.so.4 usr/lib/libpengine.so.4.2.0 debian/pycompat0000664000000000000000000000000211571740662010750 0ustar 2 debian/libpe-status4.install0000664000000000000000000000007012176650112013256 0ustar usr/lib/libpe_status.so.4 usr/lib/libpe_status.so.4.2.0 debian/changelog0000664000000000000000000015775113114325101011051 0ustar pacemaker (1.1.10+git20130802-1ubuntu2.4) trusty-security; urgency=medium * SECURITY UPDATE: Improper IPC guarding - debian/patches/CVE-2016-7035.patch: fix logic in lib/common/ipc.c. - CVE-2016-7035 -- Marc Deslauriers Fri, 02 Jun 2017 14:11:02 -0400 pacemaker (1.1.10+git20130802-1ubuntu2.3) trusty; urgency=medium * Fix: stonith-ng: Reset mainloop source IDs after removing them (LP: #1412962) * Fix: services: Fixes segfault associated with cancelling in-flight recurring operations (LP: #1412962) * Fix: services: Remove cancelled recurring ops from internal lists as early as possible (LP: #1412962) -- Rafael David Tinoco (Inaddy) Wed, 04 Feb 2015 15:51:09 -0600 pacemaker (1.1.10+git20130802-1ubuntu2.2) trusty; urgency=medium [ James Page ] * d/control: Ensure that pacemaker binary package uses matched binary versions of pacemaker libraries, avoiding upgrade problems (LP: #1382842). [ Rafael David Tinoco ] * d/p/Fix-lrmd-Prevent-glib-timers-removed-more-than-once.patch: Prevent glib assert triggered by timers being removed from mainloop more than once, cherry picked from upstream VCS (LP: #1368737). -- Rafael David Tinoco Thu, 18 Dec 2014 10:09:39 +0000 pacemaker (1.1.10+git20130802-1ubuntu2.1) trusty; urgency=medium * Fix: services: Do not allow duplicate recurring op entries - 1/3 (LP: #1353473) * High: lrmd: Merge duplicate recurring monitor operations - 2/3 (LP: #1353473) * Fix: lrmd: Cancel recurring operations before stop action is executed - 3/3 (LP: #1353473) -- Rafael David Tinoco Wed, 06 Aug 2014 09:24:13 -0300 pacemaker (1.1.10+git20130802-1ubuntu2) trusty; urgency=medium * Rebuild to drop files installed into /usr/share/pyshared. -- Matthias Klose Sun, 23 Feb 2014 13:49:43 +0000 pacemaker (1.1.10+git20130802-1ubuntu1) saucy; urgency=low * Merge from Debian unstable. Remaining changes: - debian/control: Build-Depends on libqb-dev; Depends on libheartbeat2. * Corosync's pacemaker plugin is disabled, hence not built: - debian/licrmcluster4-dev.install: Do not install plugin.h. - debian/pacemaker.install: Do not install pacemaker.lcrso. -- Andres Rodriguez Thu, 15 Aug 2013 11:27:07 -0400 pacemaker (1.1.10+git20130802-1) unstable; urgency=low * Update to latest Git HEAD for M/S fix * Bump Build-Dependency on libqb to 0.16.0.real-1 -- Martin Loschwitz Fri, 02 Aug 2013 07:19:18 +0000 pacemaker (1.1.10-2) unstable; urgency=low * Fix versioned Corosync dependency * Bump the Build-Dependency on cluster-glue -- Martin Loschwitz Fri, 02 Aug 2013 06:59:10 +0000 pacemaker (1.1.10-1) unstable; urgency=low * New upstream version; Pacemaker 1.1.10 for Unstable, still using the old Corosync. * debian/patches/ftbfs: Drop, upstream now -- Martin Loschwitz Thu, 01 Aug 2013 10:51:50 +0000 pacemaker (1.1.9+git20130321-1ubuntu3) saucy; urgency=low * debian/control: Depend on libheartbeat2 -- Andres Rodriguez Tue, 30 Jul 2013 17:48:11 -0400 pacemaker (1.1.9+git20130321-1ubuntu2) saucy; urgency=low * debian/control: Remove revision for corosync related Deps. -- Andres Rodriguez Tue, 23 Jul 2013 18:32:30 -0400 pacemaker (1.1.9+git20130321-1ubuntu1) saucy; urgency=low * Resync from debian expiremental. * debian/control: - Use lower version for Build-Depends on libcorosync-dev and libqb-dev. - Build-Depends on libcfg-dev. -- Andres Rodriguez Tue, 16 Jul 2013 16:40:24 -0400 pacemaker (1.1.9+git20130321-1) experimental; urgency=low * New upstream version * debian/patches/libpils_fix.patch: Drop, included in upstream now * debian/patches/default_file_for_pacemaker.patch: Updated * debian/patches/fix_dir_creation.patch: Drop, included in upstream now * Added the pacemaker-remote package -- Martin Loschwitz Thu, 21 Mar 2013 08:55:41 +0000 pacemaker (1.1.8+git20121010-2) unstable; urgency=low * debian/patches/libpils_fix.patch: Make pacemaker load libpils to make oldsk00l stonith agents work again -- Martin Loschwitz Thu, 11 Oct 2012 08:18:39 +0000 pacemaker (1.1.8+git20121010-1) unstable; urgency=low * New git checkout to fix a problem with ver:1 mode on unstable * debian/pacemaker-dev.install: Re-locate the .pc files to -lib packages so that the CRM shell can find them without problems * debian/rules: Install the new pacemaker default file * debian/pacemaker.postinst: Make sure directories in /var/lib/pacemaker exist and have the right permissions -- Martin Loschwitz Wed, 10 Oct 2012 11:07:28 +0000 pacemaker (1.1.8+git20121009-3) unstable; urgency=low * Apply another little fix by Andrew to fix the same issue -- Martin Loschwitz Wed, 10 Oct 2012 07:33:23 +0000 pacemaker (1.1.8+git20121009-2) unstable; urgency=low * Apply a fix by Andrew Beekhof to fix the ver:1 mode of Pacemaker in conjunction with Corosync 1.4.4 and libqb -- Martin Loschwitz Wed, 10 Oct 2012 06:53:16 +0000 pacemaker (1.1.8+git20121009-1) unstable; urgency=low * New upstream release * debian/control: Bump Standards-Version to 3.9.3 * debian/control: Add libqb-dev to Build-Depends * debian/*: Tops of adaptions for new upstream release * debian/rules: Enabled build hardening -- Martin Loschwitz Tue, 09 Oct 2012 12:17:46 +0000 pacemaker (1.1.7-1) unstable; urgency=low * New upstream revision (Pacemaker 1.1.7) * debian/libcrmcommon2-dev.install, debian/pacemaker.install: Numerous additions and removals caused by the recent file reorganization done by upstream * debian/control: Build-Conflict with libqb-dev -- Martin Loschwitz Tue, 17 Apr 2012 11:46:52 +0000 pacemaker (1.1.6-2) unstable; urgency=low * Adopted numerous changes from the Ubuntu packages, implemented by Andres Rodriguez to make co-maintaining these packages in Ubuntu and Debian a bit easier. -- Martin Loschwitz Thu, 20 Oct 2011 13:45:56 +0000 pacemaker (1.1.6-1) unstable; urgency=low * New upstream version 1.1.6 -- Martin Loschwitz Wed, 19 Oct 2011 16:26:24 +0000 pacemaker (1.1.5-3) unstable; urgency=low * debian/control: Really fix the issue with conflicting files this time, esp. for libstonithd1-dev vs. libstonithd0-dev (Closes: #639272) -- Martin Loschwitz Fri, 26 Aug 2011 13:09:40 +0000 pacemaker (1.1.5-2) unstable; urgency=low * debian/control: Fix the Replaces: and Conflicts: for libpe-status3-dev to make sure there are no conflicting files with libpe-status2-dev (Closes: #639270) -- Martin Loschwitz Fri, 26 Aug 2011 07:05:47 +0000 pacemaker (1.1.5-1) unstable; urgency=low [ Martin G. Loschwitz ] * New upstream release. Packaging is based largely on the Ubuntu package created by Andres Rodriguez. Thank you for the cool work! * Changing Ubuntu specific entries so that they become compatible with the Debian System * Bump Standards-Version -- no changes were necessary in the package * Fix magic for repairing dependency_libs problem [ Andres Rodriguez ] * debian/patches: - debian/patches/raexecupstart.patch: Refreshed. * debian/control: - Build-Depends on xsltproc, docbook-xsl, resource-agents-dev. - Bump libpe-status2 to libpe-status3 - Bump libstonithd0 to libstonithd1 - Depends on resource-agents. * debian/libpe-status2{-dev}.install: Rename to libpe-status3{-dev}.install * debian/libstonithd0{-dev}.install: Rename to libstonithd1{-dev}.install * debian/clean: Do not clean nvset.rng and rule.rng. * debian/pacemaker.install: - Add missing binaries, manpages and files. - Drop files no longer needed. - Change nvset-1.0.rng to nvset.rng and rule-1.0.rng to rule.rng. * debian/pacemaker.manpages: No longer needed. * debian/libstonithd1-dev.install: Remove files that no longer exist * debian/libcrmcluster1-dev.install: Add missing header. * debian/libpe-status3.install: Update version in file. * debian/libstonithd1.install: Update version in file. * debian/pacemaker-dev.install: Do not install *.pyc or *.pyo files * debian/rules: Change from --fail-missing to --list-missing to not fail when *.pyc or *.pyo files are not installed. * Switch from dh_pycentral to dh_python2. * debian/pacemaker.postinst: Remove pycentral pkginstall rule. -- Martin Loschwitz Thu, 24 Aug 2011 12:10:00 +0000 pacemaker (1.0.11-1.2) unstable; urgency=low * Non-maintainer upload. * Don't install python bytecode so the upload gets accepted to the archive -- Luk Claes Sun, 05 Jun 2011 22:21:18 +0200 pacemaker (1.0.11-1.1) unstable; urgency=low * Non-maintainer upload. * Remove references to other libraries from dependency_libs field (Closes: #619552). -- Luk Claes Tue, 31 May 2011 19:44:53 +0200 pacemaker (1.0.11-1) unstable; urgency=low [ Martin G. Loschwitz ] * New upstream version -- Martin Loschwitz Sun, 22 May 2011 08:52:18 +0000 pacemaker (1.0.10-6) unstable; urgency=low [ Martin G. Loschwitz ] * Added Build-Depends on libxml2-dev and help2man, kudos go to Florian Haas for pointing this out. * Replaced the lines in debian/rules to wipe dependency_libs from .la files with Steve Langasek's version (Closes: #619552) * Remove ancient leftovers from debian/rules file, again kudos to Florian Haas -- Martin Loschwitz Wed, 20 Apr 2011 13:17:24 +0000 pacemaker (1.0.10-5) unstable; urgency=low [ Andres Rodriguez ] * Fix versioned dependency on cluster-glue-dev - The version should be a cluster-glue-dev version, not a pacemaker version. Closes: #608275 * Resolve libpe-rules2 upgrade failure Closes: #609480 [ Andreas Metzler ] * Empty dependency_libs in libtool la file. http://wiki.debian.org/ReleaseGoals/LAFileRemoval Closes: #610156 -- Simon Horman Mon, 17 Jan 2011 08:10:29 +0900 pacemaker (1.0.10-4) unstable; urgency=low * Add dependency on cluster-glue-dev to libcrmcommon2-dev Closes: #608275 -- Simon Horman Tue, 04 Jan 2011 12:53:31 +0900 pacemaker (1.0.10-3) unstable; urgency=low * Use correct names for libpe-rules2-dev and libpe-status2-dev - This fixes a regression introduced in 1.0.10-2 -- Simon Horman Mon, 20 Dec 2010 15:31:41 +0900 pacemaker (1.0.10-2) unstable; urgency=low [ Andres Rodriguez ] * debian/rules: dh_pycentral only for pacemaker and pacemaker-dev. * debian/control: - Really remove Build-Depends on python-dev. - pacemaker-dev: Change from ${source:Version} to ${binary:Version}. - Add missing Section for library packages. - lib -dev binary packages: Drop ${python:Depends}, ${shlibs:Depends}; add dependency to its corresponding binary package. - lib binary packages: Drop ${python:Depends} - Rename libpe-{status,rules}-2 to libpe-{status,rules}2 respectively. * debian/libpe-{status,rules}-2{-dev}.install: - Rename to libpe-{status,rules}2{-dev}. -- Simon Horman Mon, 20 Dec 2010 09:29:39 +0900 pacemaker (1.0.10-1) unstable; urgency=low * New upstream * Depend on new binary packages of cluster-glue Closes: 593319 -- Simon Horman Thu, 16 Dec 2010 21:50:06 +0900 pacemaker (1.0.9.1+hg15626-2) experimental; urgency=low * Package split to better comply with Debian Policy (c. 8.1.) * Adapt package to new cluster-glue structure * Remove service_crm.so as according to beekhof, it's an unneeded copy only anyway * Bump Standards-Version -- Martin Loschwitz Wed, 20 Oct 2010 17:15:45 +0200 pacemaker (1.0.9.1+hg15626-1) unstable; urgency=low * New upstream Mercurial checkout to fix the "cleanup" command -- Martin Loschwitz Thu, 05 Aug 2010 13:24:45 +0000 pacemaker (1.0.9.1-2) unstable; urgency=low * Rebuild against fresh cluster-glue - Updated dependencies * Update debian/watch * Add dependencies on libglib2.0-dev, libxml2-dev and libcluster-glue-dev to pacemaker-dev. Closes: #586787 * Update standards version to 3.9.0 -- Simon Horman Wed, 14 Jul 2010 17:06:02 +0900 pacemaker (1.0.9.1-1) unstable; urgency=low * New Upstream -- Simon Horman Mon, 05 Jul 2010 22:01:05 +0900 pacemaker (1.0.8+hg15494-4) unstable; urgency=low * run dh_installdeb *after* dh_perl and dh_pycentral. -- Frederik Schüler Mon, 03 May 2010 20:10:48 +0200 pacemaker (1.0.8+hg15494-3) unstable; urgency=low * Merge 1.0.8+hg15494-2ubuntu1 debian/pacemaker-dev.install: Changed 'python2.5/site-packages' to 'python*/*-packages'. debian/control: - Add missing Build-Depends on libcluster-glue-dev. - Drop unnecessary Build-Depends on python-dev. * Build depend on libcluster-glue-dev Patch by Nobuhiro Iwamatsu Closes: 578340 -- Anibal Monsalve Salazar Wed, 21 Apr 2010 16:10:25 +1000 pacemaker (1.0.8+hg15494-2) unstable; urgency=low * Fix support of python file handling for CRM shell -- Martin Loschwitz Tue, 30 Mar 2010 15:07:48 +0000 pacemaker (1.0.8+hg15494-1) unstable; urgency=low * Build new packages for upload to official unstable repository * Base build on new cluster-glue and heartbeat * Removed spelling fixes patch; merged upstream. * Drop obsolete Build-Dependency on libnet1-dev -- Martin Loschwitz Tue, 30 Mar 2010 09:09:11 +0000 pacemaker (1.0.8-1) unstable; urgency=low [ Simon Horman ] * New Upstream -- Simon Horman Fri, 26 Mar 2010 21:02:28 +1100 pacemaker (1.0.7+hg20100303r15404-3) unstable; urgency=low [ Martin Loschwitz ] * Fixing the CRM shell finally -- Martin Loschwitz Wed, 03 Mar 2010 18:16:00 +0100 pacemaker (1.0.7+hg20100303r15404-2) unstable; urgency=low [ Martin Loschwitz ] * Fix inclusion of files for the CRM shell * Include two manpages in pacemaker package -- Martin Loschwitz Wed, 03 Mar 2010 15:33:00 +0100 pacemaker (1.0.7+hg20100303r15404-1) unstable; urgency=low [ Martin Loschwitz ] * Update the copyright-file to the version updated by Ante Karamatic * Remove the Build-Dependency on heartbeat-dev (obsolete) * Add Build-Dependency on libcluster-glue-dev * New upstream checkout; officially ready for unstable -- Martin Loschwitz Wed, 03 Mar 2010 09:00:00 +0100 pacemaker (1.0.7+hg20100203-2) UNRELEASED; urgency=low * Use debian source format 3.0 "quilt". * Raise debconf compatibility level to 7, and depend on this version accordingly. * Bump standars version to 3.8.4, no changes needed. * Remove duplicate control fields. * Add lintian overrides. * debian/rules: fix indentations. * Install manpages using dh_installman. -- Frederik Schüler Thu, 11 Feb 2010 23:45:25 +0100 pacemaker (1.0.7+hg20100203-1) unstable; urgency=low * Rebuild against the new cluster stack releases -- Martin Loschwitz Wed, 03 Feb 2010 08:30:00 +0100 pacemaker (1.0.7+hg20100127-0test1) unstable; urgency=low * New upstream version -- Martin Loschwitz Wed, 27 Jan 2010 13:58:00 +0200 pacemaker (1.0.6+hg20091102-4~bpo50+1) lenny-backports; urgency=low * Rebuild for lenny-backports. -- Martin Loschwitz Tue, 03 Nov 2009 10:44:24 +0000 pacemaker (1.0.6+hg20091102-4) unstable; urgency=low * Make pacemaker depend on cluster-agents to make sure it does not get removed during updates. -- Martin Loschwitz Tue, 03 Nov 2009 09:52:57 +0000 pacemaker (1.0.6+hg20091102-3) unstable; urgency=low * Replace dependency on cluster-messaging-framework with corosync or heartbeat -- enforce heartbeat for default installations -- Martin Loschwitz Tue, 03 Nov 2009 08:40:05 +0000 pacemaker (1.0.6+hg20091102-2) unstable; urgency=low * Fix broken dependency on heartbeat -- Martin Loschwitz Tue, 03 Nov 2009 07:49:33 +0000 pacemaker (1.0.6+hg20091102-1) unstable; urgency=low * New upstream version: 1.0.6 * Undo packagesplit for pacemaker -- it's one package now * Depend on cluster-messaging-framework -- Martin Loschwitz Mon, 02 Nov 2009 13:35:16 +0000 pacemaker (1.0.5+hg20091012-1) unstable; urgency=low * New upstream version * Switch back to openais-legacy for the time being -- Martin Loschwitz Mon, 12 Oct 2009 17:30:00 +0200 pacemaker (1.0.5+hg20090915-1) unstable; urgency=low * New upstream version * Some cleanups in debian/-subdirectory * Changes to control-file to reflect new HB situation -- Martin Loschwitz Tue, 15 Sep 2009 10:10:00 +0200 pacemaker (1.0.4.1+hg20090606-1) experimental; urgency=low * Rebuild, now with the finally "official" 1.0.4. * Some cleanups in debian/ (remove ancient files) -- Martin Loschwitz Sat, 06 Jun 2009 10:06:00 +0200 pacemaker (1.0.4.1+hg20090604-1) experimental; urgency=low * Rebuild to reflect another set of upstream changes. Sigh. -- Martin Loschwitz Thu, 04 Jun 2009 09:26:00 +0200 pacemaker (1.0.4+hg20090604-1) experimental; urgency=low * New upstream version: pacemaker 1.0.4+hg20090604 -- Martin Loschwitz Thu, 04 Jun 2009 09:26:00 +0200 pacemaker (1.0.3+svn20090522-2) experimental; urgency=low * Added --libdir to configure script to make sure libraries go into the correct directories. * Make postinst no longer bail out if /var/run/heartbeat/crm and / or /var/lib/heartbeat/pengine are missing -- Martin Loschwitz Tue, 26 May 2009 13:39:00 +0200 pacemaker (1.0.3+svn20090522-1) experimental; urgency=low * Updated to latest version of upstream 1.0 stable tree -- Martin Loschwitz Fri, 22 May 2009 13:00:00 +0200 pacemaker (1.0.2-4) experimental; urgency=low * Add missing build dependency on libheartbeat2-dev -- Simon Horman Wed, 20 May 2009 15:01:15 +0000 pacemaker (1.0.2-3) experimental; urgency=low * Added pacemaker.lcrso * Build against newer Heartbeat package * Provide separate packages for heartbeat / openais * Changed the Maintainer-Field to the Debian HA-Group -- Martin Loschwitz Thu, 25 Feb 2009 08:18:00 +0100 pacemaker (1.0.2-2) experimental; urgency=low * Increased versioned build-depend on heartbeat-dev and depend of pacemaker on heartbeat to 2.99.2+sles11r3-1 so that crmd is built against and uses liblrm.so.2 * Include var/* in pacemaker package * Add dependency on the following virtual packages provided by heartbeat. This is to ensure that if the versions of these libraries increase this version of pacemaker will conflict with the new heartbeat package - libapphb2, liblrm2, libpils2, libplumb2, libstonith1 -- Simon Horman Fri, 20 Feb 2009 21:11:39 +1100 pacemaker (1.0.2-1) experimental; urgency=medium [ Andrew Beekhof ] * Update source tarball to revision: d232d19daeb9 (stable-1.0) tip * Statistics: Changesets: 441 Diff: 639 files changed, 20871 insertions(+), 21594 deletions(-) * Changes since Pacemaker-1.0.1 + High (bnc#450815): Tools: crm cli: don't generate id for the operations tag + High: ais: Add support for the new AIS IPC layer + High: ais: Always set header.error to the correct default: SA_AIS_OK + High: ais: Bug BNC#456243 - Ensure the membership cache always contains an entry for the local node + High: ais: Bug BNC:456208 - Prevent deadlocks by not logging in the child process before exec() + High: ais: By default, disable supprt for the WIP openais IPC patch + High: ais: Detect and handle situations where ais and the crm disagree on the node name + High: ais: Ensure crm_peer_seq is updated after a membership update + High: ais: Make sure all IPC header fields are set to sane defaults + High: ais: Repair and streamline service load now that whitetank startup functions correctly + High: build: create and install doc files + High: cib: Allow clients without mainloop to connect to the cib + High: cib: CID:18 - Fix use-of-NULL in cib_perform_op + High: cib: CID:18 - Repair errors introduced in b5a18704477b - Fix use-of-NULL in cib_perform_op + High: cib: Ensure diff's contain the correct values of admin_epoch + High: cib: Fix four moderately sized memory leaks detected by Valgrind + High: Core: CID:10 - Prevent indexing into an array of schemas with a negative value + High: Core: CID:13 - Fix memory leak in log_data_element + High: Core: CID:15 - Fix memory leak in crm_get_peer + High: Core: CID:6 - Fix use-of-NULL in copy_ha_msg_input + High: Core: Fix crash in the membership code preventing node shutdown + High: Core: Fix more memory leaks foudn by valgrind + High: Core: Prevent unterminated strings after decompression + High: crmd: Bug BNC:467995 - Delay marking STONITH operations complete until STONITH tells us so + High: crmd: Bug LF:1962 - Don't NACK peers because they're not (yet) in our membership. Just ignore them. + High: crmd: Bug LF:2010 - Ensure fencing cib updates create the node_state entry if needed to preent re-fencing during cluster startup + High: crmd: Correctly handle reconnections to attrd + High: crmd: Ensure updates for lost migrate operations indicate which node it tried to migrating to + High: crmd: If there are no nodes to finalize, start an election. + High: crmd: If there are no nodes to welcome, start an election. + High: crmd: Prevent node attribute loss by detecting attrd disconnections immediately + High: crmd: Prevent node re-probe loops by ensuring manditory actions always complete + High: PE: Bug 2005 - Fix startup ordering of cloned stonith groups + High: PE: Bug 2006 - Correctly reprobe cloned groups + High: PE: Bug BNC:465484 - Fix the no-quorum-policy=suicide option + High: PE: Bug LF:1996 - Correctly process disabled monitor operations + High: PE: CID:19 - Fix use-of-NULL in determine_online_status + High: PE: Clones now default to globally-unique=false + High: PE: Correctly calculate the number of available nodes for the clone to use + High: PE: Only shoot online nodes with no-quorum-policy=suicide + High: PE: Prevent on-fail settings being ignored after a resource is successfully stopped + High: PE: Prevent use-of-NULL for failed migrate actions in process_rsc_state() + High: PE: Remove an optimization for the terminate node attribute that caused the cluster to block indefinitly + High: PE: Repar the ability to colocate based on node attributes other than uname + High: PE: Start the correct monitor operation for unmanaged masters + High: stonith: CID:3 - Fix another case of exceptionally poor error handling by the original stonith developers + High: stonith: CID:5 - Checking for NULL and then dereferencing it anyway is an interesting approach to error handling + High: stonithd: Sending IPC to the cluster is a privileged operation + High: stonithd: wrong checks for shmid (0 is a valid id) + High: Tools: attrd - Correctly determine when an attribute has stopped changing and should be committed to the CIB + High: Tools: Bug 2003 - pingd doesn't correctly detect failures when the interface is down + High: Tools: Bug 2003 - pingd doesn't correctly handle node-down events on multi-NIC systems + High: Tools: Bug 2021 - pingd does not detect sequence wrapping correctly, incorrectly reports nodes offline + High: Tools: Bug BNC:468066 - Don't use the result of uname() when its no longer in scope + High: Tools: Bug BNC:473265 - crm_resource -L dumps core + High: Tools: Bug LF:2001 - Transient node attributes should be set via attrd + High: Tools: Bug LF:2036 - crm_resource cannot set/get parameters for cloned resources + High: Tools: Bug LF:2046 - Node attribute updates are lost because attrd can take too long to start + High: Tools: Cause the correct clone instance to be failed with crm_resource -F + High: Tools: cluster_test - Allow the user to select a stack and fix CTS invocation + High: Tools: crm cli: allow rename only if the resource is stopped + High: Tools: crm cli: catch system errors on file operations + High: Tools: crm cli: completion for ids in configure + High: Tools: crm cli: drop '-rsc' from attributes for order constraint + High: Tools: crm cli: exit with an appropriate exit code + High: Tools: crm cli: fix wrong order of action and resource in order constraint + High: Tools: crm cli: fox wrong exit code + High: Tools: crm cli: improve handling of cib attributes + High: Tools: crm cli: new command: configure rename + High: Tools: crm cli: new command: configure upgrade + High: Tools: crm cli: new command: node delete + High: Tools: crm cli: prevent key errors on missing cib attributes + High: Tools: crm cli: print long help for help topics + High: Tools: crm cli: return on syntax error when parsing score + High: Tools: crm cli: rsc_location can be without nvpairs + High: Tools: crm cli: short node preference location constraint + High: Tools: crm cli: sometimes, on errors, level would change on single shot use + High: Tools: crm cli: syntax: drop a bunch of commas (remains of help tables conversion) + High: Tools: crm cli: verify user input for sanity + High: Tools: crm: find expressions within rules (don't always skip xml nodes due to used id) + High: Tools: crm_master shouldn't define a set id now that attrd is used. Defining one can break lookups + High: Tools: crm_mon Use the OID assigned to the project by IANA for SNMP traps + High: Tools: hb2openais: add constraints for clvmd to controld + High: Tools: hb2openais: adjust path to the supporting script and set CONF variable + High: Tools: hb2openais: improve media processing and set rrp_mode for multiple rings configuration + High: Tools: hb2openais: openais supports up to two rings + High: Tools: hb2openais: set no-quorum-policy to ignore for 2-node clusters + High: Tools: hb2openais: start mgmtd if appropriate + Medium (bnc#445622): Tools: crm cli: improve the node show command and drop node status + Medium (LF 2009): stonithd: improve timeouts for remote fencing + Medium: ais: Allow dead peers to be removed from membership calculations + Medium: ais: Pass node deletion events on to clients + Medium: ais: Sanitize ipc usage + Medium: ais: Supply the node's uname in addtion to the id + Medium: Build: Clean up configure to ensure NON_FATAL_CFLAGS is consistent with CFLAGS (ie. includes -g) + Medium: Build: Install cluster_test + Medium: Build: Use more restrictive CFLAGS and fix the resulting errors + Medium: cib: CID:20 - Fix potential use-after-free in cib_native_signon + Medium: Core: Bug BNC:474727 - Set a maximum time to wait for IPC messages + Medium: Core: CID:12 - Fix memory leak in decode_transition_magic error path + Medium: Core: CID:14 - Fix memory leak in calculate_xml_digest error path + Medium: Core: CID:16 - Fix memory leak in date_to_string error path + Medium: Core: Try to track down the cause of XML parsing errors + Medium: crmd: Bug BNC:472473 - Don't wait excessive amounts of time for lost actions + Medium: crmd: Bug BNC:472473 - Reduce the transition timeout to action_timeout+network_delay + Medium: crmd: Don't fast-track the processing of LRM refreshes when there are pending actions. + Medium: crmd: do_dc_join_filter_offer - Check the 'join' message is for the current instance before deciding to NACK peers + Medium: crmd: Find option values without having to do a config upgrade + Medium: crmd: Implement shutdown using a transient node attribute + Medium: crmd: Update the crmd options to use dashes instead of underscores + Medium: cts: Add 'cluster reattach' to the suite of automated regression tests + Medium: cts: cluster_test - Make some usability enhancements + Medium: CTS: cluster_test - suggest a valid port number + Medium: CTS: Fix python import order + Medium: cts: Implement an automated SplitBrain test + Medium: CTS: Remove references to deleted classes + Medium: Extra: Resources - Use HA_VARRUN instead of HA_RSCTMP for state files as Heartbeat removes HA_RSCTMP at startup + Medium: HB: Bug 1933 - Fake crmd_client_status_callback() calls because HB doesn't provide them for already running processes + Medium: PE: CID:17 - Fix memory leak in find_actions_by_task error path + Medium: PE: CID:7,8 - Prevent hypothetical use-of-NULL in LogActions + Medium: PE: Defer logging the actions performed on a resource until we've processed ordering constraints + Medium: PE: Remove the symmetrical attribute of colocation constraints + Medium: Resources: pingd - fix the meta defaults + Medium: Resources: Stateful - Add missing meta defaults + Medium: stonithd: exit if we the pid file cannot be locked + Medium: Tools: Allow attrd clients to specify the ID the attribute should be created with + Medium: Tools: attrd - Allow attribute updates to be performed from a hosts' peer + Medium: Tools: Bug LF:1994 - Clean up crm_verify return codes + Medium: Tools: Change the pingd defaults to ping hosts once every second (instead of 5 times every 10 seconds) + Medium: Tools: cibmin - Detect resource operations with a view to providing email/snmp/cim notification + Medium: Tools: crm cli: add back symmetrical for order constraints + Medium: Tools: crm cli: generate role in location when converting from xml + Medium: Tools: crm cli: handle shlex exceptions + Medium: Tools: crm cli: keep order of help topics + Medium: Tools: crm cli: refine completion for ids in configure + Medium: Tools: crm cli: replace inf with INFINITY + Medium: Tools: crm cli: streamline cib load and parsing + Medium: Tools: crm cli: supply provider only for ocf class primitives + Medium: Tools: crm_mon - Add support for sending mail notifications of resource events + Medium: Tools: crm_mon - Include the DC's version in status summary + Medium: Tools: crm_mon - Sanitize startup and option processing + Medium: Tools: crm_mon - switch to event-driven updates and add support for sending snmp traps + Medium: Tools: crm_shadow - Replace the --locate option with the saner --edit + Medium: Tools: hb2openais: do not remove Evmsd resources, but replace them with clvmd + Medium: Tools: hb2openais: replace crmadmin with crm_mon + Medium: Tools: hb2openais: replace the lsb class with ocf for o2cb + Medium: Tools: hb2openais: reuse code + Medium: Tools: LF:2029 - Display an error if crm_resource is used to reset the operation history of non-primitive resources + Medium: Tools: Make pingd resilient to attrd failures + Medium: Tools: pingd - fix the command line switches + Medium: Tools: Rename ccm_tool to crm_node [ Simon Horman ] * Changes made while producing Debian packages + Change distribution from sid to experimental + Remove autoconf automake autoheader on clean as these end up as symlinks which dpkg-source can't handle + Remove libltdl.tar on as this is a binary which dpkg-source can't handle + Make sure configure and py-compile are executable if present + Remove build-stamp on clean, otherwise the package can't be rebuilt + Remove lib64 path mangling code from configure, it seems to be broken on Debian + Use dh_install instead of dh_movefiles - Remove debian/*.files debian/*.dirs These files are not needed, as debian/*.install is used. They should be removed from upstream. + Use dh_clean and dh_auto_clean in clean target of debian/rules + Use dh_prep instead of dh_clean in build target of debian/rules -- Simon Horman Tue, 17 Feb 2009 00:59:08 +0000 pacemaker (1.0.1-1) stable; urgency=high * Update source tarball to revision: 2883431a818b (stable-1.0) tip * Statistics: Changesets: 160 Diff: 810 files changed, 6881 insertions(+), 6214 deletions(-) * Changes since 388654dfef8f + High: ais: Allow the crmd to get callbacks whenever a node's state changes + High: ais: Ensure HA_RSCTMP exists for use by resource agents + High: ais: Hook up the openais.conf config logging options + High: ais: Zero out the PID of disconnecting clients + High: cib: Ensure global updates cause a disk write when appropriate + High: Core: Add an extra snaity check to getXpathResults() to prevent segfaults + High: Core: Don't redefine __FUNCTION__ unnecessarily + High: Core: Repair the ability to have comments in the configuration + High: crmd: Bug:1975 - crmd should wait indefinitely for stonith operations to complete + High: crmd: Ensure PE processing does not occur for all error cases in do_pe_invoke_callback + High: crmd: Requests to the CIB should cause any prior PE calculations to be ignored + High: PE: Bug LF:1988 - Ensure recurring operations always have the correct target-rc set + High: PE: Bug LF:1988 - For unmanaged resources we need to skip the usual can_run_resources() checks + High: PE: Ensure the terminate node attribute is handled correctly + High: PE: Fix optional colocation + High: PE: Improve up the detection of 'new' nodes joining the cluster + High: PE: Prevent assert failures in master_color() by ensuring unmanaged masters are always reallocated to their current location + High: Tools: crm cli: parser: return False on syntax error and None for comments + High: Tools: crm cli: unify template and edit commands + High: Tools: crm_shadow - Show more line number information after validation failures + High: Tools: hb2openais: add option to upgrade the CIB to v3.0 + High: Tools: hb2openais: add U option to getopts and update usage + High: Tools: hb2openais: backup improved and multiple fixes + High: Tools: hb2openais: fix class/provider reversal + High: Tools: hb2openais: fix testing + High: Tools: hb2openais: move the CIB update to the end + High: Tools: hb2openais: update logging and set logfile appropriately + High: Tools: LF:1969 - Attrd never sets any properties in the cib + High: Tools: Make attrd functional on OpenAIS + Medium: ais: Hook up the options for specifying the expected number of nodes and total quorum votes + Medium: ais: Provide better feedback when nodes change nodeid's (in openais.conf) + Medium: cib: Always store cib contents on disk with num_updates=0 + Medium: cib: Ensure remote access ports are cleaned up on shutdown + Medium: crmd: Detect deleted resource operations automatically + Medium: crmd: Erase a node's resource operations and transient attributes after a successful STONITH + Medium: crmd: Find a more appropriate place to update quorum and refresh attrd attributes + Medium: crmd: Fix the handling of unexpected PE exits to ensure the current CIB is stored + Medium: crmd: Fix the recording of pending operations in the CIB + Medium: crmd: Initiate an attrd refresh _after_ the status section has been fully repopulated + Medium: crmd: Only the DC should update quorum in an openais cluster + Medium: Ensure meta attributes are used consistantly + Medium: PE: Allow group and clone level resource attributes + Medium: PE: Bug N:437719 - Ensure scores from colocated resources count when allocating groups + Medium: PE: Prevent lsb scripts from being used in globally unique clones + Medium: PE: Make a best-effort guess at a migration threshold for people with 0.6 configs + Medium: Resources: controld - ensure we are part of a clone with globally_unique=false + Medium: Tools: attrd - Automatically refresh all attributes after a CIB replace operation + Medium: Tools: Bug LF:1985 - crm_mon - Correctly process failed cib queries to allow reconnection after cluster restarts + Medium: Tools: Bug LF:1987 - crm_verify incorrectly warns of configuration upgrades for the most recent version + Medium: Tools: crm (bnc#441028): check for key error in attributes management + Medium: Tools: crm_mon - display the meaning of the operation's rc code instead of the status + Medium: Tools: crm_mon - Fix the display of timing data + Medium: Tools: crm_verify - check that we're being asked to validate a complete config + Medium: xml: Relax the restriction on the contents of rsc_locaiton.node -- Andrew Beekhof Mon, 17 Nov 2008 10:31:37 +0100 pacemaker (1.0.0-1) stable; urgency=medium * Update source tarball to revision: 388654dfef8f tip * Statistics: Changesets: 261 Diff: 3021 files changed, 244985 insertions(+), 111596 deletions(-) * Changes since f805e1b30103 + High: add the crm cli program + High: ais: Move the service id definition to a common location and make sure it is always used + High: build: rename hb2openais.sh to .in and replace paths with vars + High: cib: Implement --create for crm_shadow + High: cib: Remove dead files + High: Core: Allow the expected number of quorum votes to be configrable + High: Core: cl_malloc and friends were removed from Heartbeat + High: Core: Only call xmlCleanupParser() if we parsed anything. Doing so unconditionally seems to cause a segfault + High: hb2openais.sh: improve pingd handling; several bugs fixed + High: hb2openais: fix clone creation; replace EVMS strings + High: new hb2openais.sh conversion script + High: PE: Bug LF:1950 - Ensure the current values for all notification variables are always set (even if empty) + High: PE: Bug LF:1955 - Ensure unmanaged masters are unconditionally repromoted to ensure they are monitored correctly. + High: PE: Bug LF:1955 - Fix another case of filtering causing unmanaged master failures + High: PE: Bug LF:1955 - Umanaged mode prevents master resources from being allocated correctly + High: PE: Bug N:420538 - Anit-colocation caused a positive node preference + High: PE: Correctly handle unmanaged resources to prevent them from being started elsewhere + High: PE: crm_resource - Fix the --migrate command + High: PE: MAke stonith-enabled default to true and warn if no STONITH resources are found + High: PE: Make sure orphaned clone children are created correctly + High: PE: Monitors for unmanaged resources don't need to wait for start/promote/demote actions to complete + High: stonithd (LF 1951): fix remote stonith operations + High: stonithd: fix handling of timeouts + High: stonithd: fix logic for stonith resource priorities + High: stonithd: implement the fence-timeout instance attribute + High: stonithd: initialize value before reading fence-timeout + High: stonithd: set timeouts for fencing ops to the timeout of the start op + High: stonithd: stonith rsc priorities (new feature) + High: Tools: Add hb2openais - a tool for upgrading a Heartbeat cluster to use OpenAIS instead + High: Tools: crm_verify - clean up the upgrade logic to prevent crash on invalid configurations + High: Tools: Make pingd functional on Linux + High: Update version numbers for 1.0 candidates + Medium: ais: Add support for a synchronous call to retrieve the node's nodeid + Medium: ais: Use the agreed service number + Medium: Build: Reliably detect heartbeat libraries during configure + Medium: Build: Supply prototypes for libreplace functions when needed + Medium: Build: Teach configure how to find corosync + Medium: Core: Provide better feedback if Pacemaker is started by a stack it doesn't support + Medium: crmd: Avoid calling GHashTable functions with NULL + Medium: crmd: Delay raising I_ERROR when the PE exits until we've had a chance to save the current CIB + Medium: crmd: Hook up the stonith-timeout option to stonithd + Medium: crmd: Prevent potential use-of-NULL in global_timer_callback + Medium: crmd: Rationalize the logging of graph aborts + Medium: PE: Add a stonith_timeout option and remove new options that are better set in rsc_defaults + Medium: PE: Allow external entities to ask for a node to be shot by creating a terminate=true transient node attribute + Medium: PE: Bug LF:1950 - Notifications do not contain all documented resource state fields + Medium: PE: Bug N:417585 - Don't restart group children who's individual score drops below zero + Medium: PE: Detect clients that disconnect before receiving their reply + Medium: PE: Implement a true maintenance mode + Medium: PE: Implement on-fail=standby for NTT. Derived from a patch by Satomi TANIGUCHI + Medium: PE: Print the correct message when stonith is disabled + Medium: PE: ptest - check the input is valid before proceeding + Medium: PE: Revert group stickiness to the 'old way' + Medium: PE: Use the correct attribute for action 'requires' (was prereq) + Medium: stonithd: Fix compilation without full heartbeat install + Medium: stonithd: exit with better code on empty host list + Medium: tools: Add a new regression test for CLI tools + Medium: tools: crm_resource - return with non-zero when a resource migration command is invalid + Medium: tools: crm_shadow - Allow the admin to start with an empty CIB (and no cluster connection) + Medium: xml: pacemaker-0.7 is now an alias for the 1.0 schema -- Andrew Beekhof Thu, 16 Oct 2008 11:16:46 +0200 pacemaker (0.7.3-1) stable; urgency=medium * Update source tarball to revision: 33e677ab7764+ tip * Statistics: Changesets: 133 Diff: 89 files changed, 7492 insertions(+), 1125 deletions(-) * Changes since f805e1b30103 + High: Tools: add the crm cli program + High: Core: cl_malloc and friends were removed from Heartbeat + High: Core: Only call xmlCleanupParser() if we parsed anything. Doing so unconditionally seems to cause a segfault + High: new hb2openais.sh conversion script + High: PE: Bug LF:1950 - Ensure the current values for all notification variables are always set (even if empty) + High: PE: Bug LF:1955 - Ensure unmanaged masters are unconditionally repromoted to ensure they are monitored correctly. + High: PE: Bug LF:1955 - Fix another case of filtering causing unmanaged master failures + High: PE: Bug LF:1955 - Umanaged mode prevents master resources from being allocated correctly + High: PE: Bug N:420538 - Anit-colocation caused a positive node preference + High: PE: Correctly handle unmanaged resources to prevent them from being started elsewhere + High: PE: crm_resource - Fix the --migrate command + High: PE: MAke stonith-enabled default to true and warn if no STONITH resources are found + High: PE: Make sure orphaned clone children are created correctly + High: PE: Monitors for unmanaged resources don't need to wait for start/promote/demote actions to complete + High: stonithd (LF 1951): fix remote stonith operations + High: Tools: crm_verify - clean up the upgrade logic to prevent crash on invalid configurations + Medium: ais: Add support for a synchronous call to retrieve the node's nodeid + Medium: ais: Use the agreed service number + Medium: PE: Allow external entities to ask for a node to be shot by creating a terminate=true transient node attribute + Medium: PE: Bug LF:1950 - Notifications do not contain all documented resource state fields + Medium: PE: Bug N:417585 - Don't restart group children who's individual score drops below zero + Medium: PE: Implement a true maintenance mode + Medium: PE: Print the correct message when stonith is disabled + Medium: stonithd: exit with better code on empty host list + Medium: xml: pacemaker-0.7 is now an alias for the 1.0 schema -- Andrew Beekhof Mon, 22 Sep 2008 12:24:54 +0200 pacemaker (0.7.1-1) stable; urgency=medium * Update source tarball to revision: f805e1b30103+ tip * Statistics: Changesets: 184 Diff: 513 files changed, 43408 insertions(+), 43783 deletions(-) * Testing Notes: + Test hardware: + All testing was performed with STONITH enabled + Pending bugs encountered during testing: * Changes since 0.7.0-19 + Fix compilation when GNUTLS isnt found + Hg: Use the default branch name for dev + High: admin: Fix use-after-free in crm_mon + High: Build: Remove testing code that prevented heartbeat-only builds + High: cib: Use single quotes so that the xpath queries for nvpairs will succeed + High: crmd: Always connect to stonithd when the TE starts and ensure we notice if it dies + High: crmd: Correctly handle a dead PE process + High: crmd: Make sure async-failures cause the failcount to be incrimented + High: PE: Bug LF:1941 - Handle failed clone instance probes when clone-max < #nodes + High: PE: Parse resource ordering sets correctly + High: PE: Prevent use-of-NULL - order->rsc_rh will not always be non-NULL + High: PE: Unpack colocation sets correctly + High: Tools: crm_mon - Prevent use-of-NULL for orphaned resources + Medium: ais: Add support for a synchronous call to retrieve the node's nodeid + Medium: ais: Allow transient clients to receive membership updates + Medium: ais: Avoid double-free in error path + Medium: ais: Include in the mebership nodes for which we haven't determined their hostname + Medium: ais: Spawn the PE from the ais plugin instead of the crmd + Medium: cib: By default, new configurations use the latest schema + Medium: cib: Clean up the CIB if it was already disconnected + Medium: cib: Only incriment num_updates if something actually changed + Medium: cib: Prevent use-after-free in client after abnormal termination of the CIB + Medium: Core: Fix memory leak in xpath searches + Medium: Core: Get more details regarding parser errors + Medium: Core: Repair expand_plus_plus - don't call char2score on unexpanded values + Medium: Core: Switch to the libxml2 parser - its significantly faster + Medium: Core: Use a libxml2 library function for xml -> text conversion + Medium: crmd: Asynchronous failure actions have no parameters + Medium: crmd: Avoid calling glib functions with NULL + Medium: crmd: Do not allow an election to promote a node from S_STARTING + Medium: crmd: Do not vote if we've not completed the local startup + Medium: crmd: Fix te_update_diff() now that get_object_root() functions differently + Medium: crmd: Fix the lrmd xpath expressions to not contain quotes + Medium: crmd: If we get a join offer during an election, better restart the election + Medium: crmd: No further processing is needed when using the LRM's API call for failing resources + Medium: crmd: Only update have-quorum if the value changed + Medium: crmd: Repair the input validation logic in do_te_invoke + Medium: cts: CIB's can no longer contain comments + Medium: cts: Enable a bunch of tests that were incorrectly disabled + Medium: cts: The libxml2 parser wont allow v1 resources to use integers as parameter names + Medium: Don't use the cluster UID and GID directly. Look them up based on the configured value of HA_CCMUSER + Medium: Fix compilation when heartbeat is not supported + Medium: PE: Allow groups to be involved in optional ordering constraints + Medium: PE: Allow sets of operations to be reused by multiple resources + Medium: PE: Bug LF:1941 - Mark extra clone instances as orphans and don't show inactive ones + Medium: PE: Determin the correct migration-threshold during resource expansion + Medium: PE: Implement no-quorum-policy=suicide (FATE #303619) + Medium: pengine: Clean up resources after stopping old copies of the PE + Medium: pengine: Teach the PE how to stop old copies of itself + Medium: Tools: Backport hb_report updates + Medium: Tools: cib_shadow - On create, spawn a new shell with CIB_shadow and PS1 set accordingly + Medium: Tools: Rename cib_shadow to crm_shadow -- Andrew Beekhof Wed, 20 Aug 2008 10:19:14 +0200 pacemaker (0.7.0-19) unstable; urgency=medium * Update source tarball to revision: 007c3a1c50f5 (unstable) tip * Statistics: Changesets: 108 Diff: 216 files changed, 4632 insertions(+), 4173 deletions(-) * Changes added since unstable-0.7 + High: admin: Fix use-after-free in crm_mon + High: ais: Change the tag for the ais plugin to "pacemaker" (used in openais.conf) + High: ais: Log terminated processes as an error + High: cib: Performance - Reorganize things to avoid calculating the XML diff twice + High: PE: Bug LF:1941 - Handle failed clone instance probes when clone-max < #nodes + High: PE: Fix memory leak in action2xml + High: PE: Make OCF_ERR_ARGS a node-level error rather than a cluster-level one + High: PE: Properly handle clones that are not installed on all nodes + Medium: admin: cibadmin - Show any validation errors if the upgrade failed + Medium: admin: cib_shadow - Implement --locate to display the underlying filename + Medium: admin: cib_shadow - Implement a --diff option + Medium: admin: cib_shadow - Implement a --switch option + Medium: admin: crm_resource - create more compact constraints that don't use lifetime (which is deprecated) + Medium: ais: Approximate born_on for OpenAIS based clusters + Medium: cib: Remove do_id_check, it is a poor substitute for ID validation by a schema + Medium: cib: Skip construction of pre-notify messages if no-one wants one + Medium: Core: Attempt to streamline some key functions to increase performance + Medium: Core: Clean up XML parser after validation + Medium: crmd: Detect and optimize the crm's behavior when processing diffs of an LRM refresh + Medium: Fix memory leaks when resetting the name of an XML object + Medium: PE: Prefer the current location if it is one of a group of nodes with the same (highest) score -- Andrew Beekhof Fri, 18 Jul 2008 10:06:36 +0200 pacemaker (0.7.0-1) unstable; urgency=low * Update source tarball to revision: bde0c7db74fb tip * Statistics: Changesets: 439 Diff: 676 files changed, 41310 insertions(+), 52071 deletions(-) * Changes added since stable-0.6 + High: A new tool for setting up and invoking CTS + High: Admin: All tools now use --node (-N) for specifying node unames + High: Admin: All tools now use --xml-file (-x) and --xml-text (-X) for specifying where to find XML blobs + High: cib: Cleanup the API - remove redundant input fields + High: cib: Implement CIB_shadow - a facility for making and testing changes before uploading them to the cluster + High: cib: Make registering per-op callbacks an API call and renamed (for clarity) the API call for requesting notifications + High: Core: Add a facility for automatically upgrading old configurations + High: Core: Adopt libxml2 as the XML processing library - all external clients need to be recompiled + High: Core: Allow sending TLS messages larger than the MTU + High: Core: Fix parsing of time-only ISO dates + High: Core: Smarter handling of XML values containing quotes + High: Core: XML memory corruption - catch, and handle, cases where we're overwriting an attribute value with itself + High: Core: The xml ID type doesn't allow UUIDs that start with a number + High: Core: Implement XPath based versions of query/delete/replace/modify + High: Core: Remove some HA2.0.(3,4) compatability code + High: crmd: Overhaul the detection of nodes that are starting vs. failed + High: PE: Bug LF:1459 - Allow failures to expire + High: PE: Have the PE do non-persistent configuration upgrades before performing calculations + High: PE: Replace failure-stickiness with a simple 'migration-threshold' + High: TE: Simplify the design by folding the tengine process into the crmd + Medium: Admin: Bug LF:1438 - Allow the list of all/active resource operations to be queried by crm_resource + Medium: Admin: Bug LF:1708 - crm_resource should print a warning if an attribute is already set as a meta attribute + Medium: Admin: Bug LF:1883 - crm_mon should display fail-count and operation history + Medium: Admin: Bug LF:1883 - crm_mon should display operation timing data + Medium: Admin: Bug N:371785 - crm_resource -C doesn't also clean up fail-count attributes + Medium: Admin: crm_mon - include timing data for failed actions + Medium: ais: Read options from the environment since objdb isn't completely usable yet + Medium: cib: Add sections for op_defaults and rsc_defaults + Medium: cib: Better matching notification callbacks (for detecting duplicates and removal) + Medium: cib: Bug LF:1348 - Allow rules and attribute sets to be referenced for use in other objects + Medium: cib: BUG LF:1918 - By default, all cib calls now timeout after 30s + Medium: cib: Detect updates that decrease the version tuple + Medium: cib: Implement a client-side operation timeout - Requires LHA update + Medium: cib: Implement callbacks and async notifications for remote connections + Medium: cib: Make cib->cmds->update() an alias for modify at the API level (also implemented in cibadmin) + Medium: cib: Mark the CIB as disconnected if the IPC connection is terminated + Medium: cib: New call option 'cib_can_create' which can be passed to modify actions - allows the object to be created if it doesn't exist yet + Medium: cib: Reimplement get|set|delete attributes using XPath + Medium: cib: Remove some useless parts of the API + Medium: cib: Remove the 'attributes' scaffolding from the new format + Medium: cib: Implement the ability for clients to connect to remote servers + Medium: Core: Add support for validating xml against RelaxNG schemas + Medium: Core: Allow more than one item to be modified/deleted in XPath based operations + Medium: Core: Fix the sort_pairs function for creating sorted xml objects + Medium: Core: iso8601 - Implement subtract_duration and fix subtract_time + Medium: Core: Reduce the amount of xml copying occuring + Medium: Core: Support value='value+=N' XML updates (in addtion to value='value++') + Medium: crmd: Add support for lrm_ops->fail_rsc if its available + Medium: crmd: HB - watch link status for node leaving events + Medium: crmd: Bug LF:1924 - Improved handling of lrmd disconnects and shutdowns + Medium: crmd: Do not wait for actions with a start_delay over 5 minutes. Confirm them immediately + Medium: PE: Bug LF:1328 - Don't fencing nodes in clusters without managed resources + Medium: PE: Bug LF:1461 - Give transient node attributes (in ) preference over persistent ones (in ) + Medium: PE: Bug LF:1884, Bug LF:1885 - Implement N:M ordering and colocation constraints + Medium: PE: Bug LF:1886 - Create a resource and operation 'defaults' config section + Medium: PE: Bug LF:1892 - Allow recurring actions to be triggered at known times + Medium: PE: Bug LF:1926 - Probes should complete before stop actions are invoked + Medium: PE: Fix the standby when it's set as a transient attribute + Medium: PE: Implement a global 'stop-all-resources' option + Medium: PE: Implement cibpipe, a tool for performing/simulating config changes "offline" + Medium: PE: We don't allow colocation with specific clone instances + Medium: Tools: pingd - Implement a stack-independant version of pingd + Medium: xml: Ship an xslt for upgrading from 0.6 to 0.7 -- Andrew Beekhof Wed, 25 Jun 2008 12:55:38 +0200 pacemaker (0.6.5-1) unstable; urgency=low * New upstream release * Standards version is 3.8.0 * Change "Recommends:" to "Suggests:" * Add debian/watch -- Anibal Monsalve Salazar Sat, 21 Jun 2008 11:47:42 +1000 pacemaker (0.6.0-1) experimental; urgency=low * New debian package. Closes: #458497 * New upstream release * debian/copyright: updated * Makefile.am: pacemaker.lcrso permissions are 0644 * crm_utils.py.in: interpreter is /usr/bin/python * service_crm.so: removed, it's a copy of pacemaker.lcrso * crm.dtd: is not executable * *.py files are executables * pacemaker.lcrso: stripped * Test if Makefile exists before running $(MAKE) * Updated descriptions and homepage * Updated build-dependency and dependency lists * Deleted rpaths with chrpath -- Anibal Monsalve Salazar Sat, 19 Jan 2008 18:28:49 +1100 Local variables: mode: debian-changelog End: debian/libstonithd2.install0000664000000000000000000000006612176650201013167 0ustar usr/lib/libstonithd.so.2 usr/lib/libstonithd.so.2.1.0 debian/libcrmcluster4-dev.install0000664000000000000000000000100112203211312014245 0ustar usr/lib/libcrmcluster.so usr/lib/libcrmcluster.a usr/lib/libcrmcluster.la usr/include/pacemaker/crm/cib.h usr/include/pacemaker/crm/crm.h usr/include/pacemaker/crm/msg_xml.h usr/include/pacemaker/crm/transition.h usr/include/pacemaker/crm/attrd.h usr/include/pacemaker/crm_config.h usr/include/pacemaker/crm/stonith-ng.h usr/include/pacemaker/crm/error.h usr/include/pacemaker/crm/services.h usr/include/pacemaker/crm/cluster.h #usr/include/pacemaker/crm/cluster/plugin.h usr/lib/pkgconfig/pacemaker-cluster.pc debian/pacemaker.postinst0000664000000000000000000000306512035252100012717 0ustar #!/bin/sh # # License: GNU General Public License (GPL) # # postinst script for heartbeat # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-deconfigure' `in-favour' # `removing' # # case "$1" in configure) addgroup --system haclient adduser --system hacluster --ingroup haclient --home /var/lib/heartbeat for i in /var/run/heartbeat/crm /var/lib/heartbeat/crm \ /var/lib/heartbeat/pengine /var/lib/pengine \ /var/lib/pacemaker/blackbox /var/lib/pacemaker/cib \ /var/lib/pacemaker/cores /var/lib/pacemaker/crm \ /var/lib/pacemaker/lrm /var/lib/pacemaker/pengine; do if [ ! -d $i ]; then mkdir -p $i fi chown hacluster $i chgrp haclient $i done chmod 750 /var/lib/pengine ;; purge) id haclient >/dev/null 2>&1; if [ "x$?" = "x0" ]; then userdel -rf haclient && groupdel hacluster; fi rm -rf /var/lib/openais rm -rf /var/log/openais ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 0 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/pacemaker.lintian-overrides0000664000000000000000000000014511571740662014511 0ustar pacemaker binary: package-name-doesnt-match-sonames pacemaker binary: shlib-without-versioned-soname debian/source/0000775000000000000000000000000011571740662010501 5ustar debian/source/format0000664000000000000000000000001411571740662011707 0ustar 3.0 (quilt) debian/compat0000664000000000000000000000000211571740662010377 0ustar 7 debian/pacemaker-remote.install0000664000000000000000000000026012122560624013777 0ustar etc/init.d/pacemaker_remote usr/share/man/man7/ocf_pacemaker_remote.7 usr/share/man/man8/pacemaker_remoted.8 usr/sbin/pacemaker_remoted usr/lib/ocf/resource.d/pacemaker/remote debian/patches/0000775000000000000000000000000013114325064010616 5ustar debian/patches/Fix-lrmd-Cancel-recurring-operations-before-stop-act.patch0000664000000000000000000002113212410333251023645 0ustar Description: [PATCH 3/3] Fix: lrmd: Cancel recurring operations before stop action is executed Origin: upstream, commit: 348bb51 Author: David Vossel Last-Updated: 2014-08-08 Bug-Ubuntu: https://bugs.launchpad.net/bugs/1353473 --- include/crm/common/mainloop.h | 1 + lib/common/mainloop.c | 167 ++++++++++++++++++++++++++++-------------- lib/services/services.c | 9 ++- lrmd/lrmd.c | 10 +-- 4 files changed, 127 insertions(+), 60 deletions(-) diff --git a/include/crm/common/mainloop.h b/include/crm/common/mainloop.h index 0941f1b..baee2ee 100644 --- a/include/crm/common/mainloop.h +++ b/include/crm/common/mainloop.h @@ -93,6 +93,7 @@ const char *mainloop_child_name(mainloop_child_t * child); pid_t mainloop_child_pid(mainloop_child_t * child); void mainloop_clear_child_userdata(mainloop_child_t * child); +gboolean mainloop_child_kill(pid_t pid); # define G_PRIORITY_MEDIUM (G_PRIORITY_HIGH/2) diff --git a/lib/common/mainloop.c b/lib/common/mainloop.c index d678584..a77e90c 100644 --- a/lib/common/mainloop.c +++ b/lib/common/mainloop.c @@ -855,10 +855,35 @@ mainloop_clear_child_userdata(mainloop_child_t * child) child->privatedata = NULL; } +/* good function name */ +static void +child_free(mainloop_child_t *child) +{ + if (child->timerid != 0) { + crm_trace("Removing timer %d", child->timerid); + g_source_remove(child->timerid); + child->timerid = 0; + } + free(child->desc); + free(child); +} + +/* terrible function name */ +static int +child_kill_helper(mainloop_child_t *child) +{ + if (kill(child->pid, SIGKILL) < 0) { + crm_perror(LOG_ERR, "kill(%d, KILL) failed", child->pid); + return -errno; + } + return 0; +} + static gboolean child_timeout_callback(gpointer p) { mainloop_child_t *child = p; + int rc = 0; child->timerid = 0; if (child->timeout) { @@ -866,88 +891,122 @@ child_timeout_callback(gpointer p) return FALSE; } + rc = child_kill_helper(child); + if (rc == ESRCH) { + /* Nothing left to do. pid doesn't exist */ + return FALSE; + } + child->timeout = TRUE; crm_warn("%s process (PID %d) timed out", child->desc, (int)child->pid); - if (kill(child->pid, SIGKILL) < 0) { - if (errno == ESRCH) { - /* Nothing left to do */ - return FALSE; - } - crm_perror(LOG_ERR, "kill(%d, KILL) failed", child->pid); - } - child->timerid = g_timeout_add(5000, child_timeout_callback, child); return FALSE; } static GListPtr child_list = NULL; -static void -child_death_dispatch(int signal) +static gboolean +child_waitpid(mainloop_child_t *child, int flags) { - GListPtr iter = child_list; - - while(iter) { - int rc = 0; - int core = 0; - int signo = 0; - int status = 0; - int exitcode = 0; - - GListPtr saved = NULL; - mainloop_child_t *child = iter->data; + int rc = 0; + int core = 0; + int signo = 0; + int status = 0; + int exitcode = 0; - rc = waitpid(child->pid, &status, WNOHANG); - if(rc == 0) { - iter = iter->next; - continue; + rc = waitpid(child->pid, &status, flags); + if(rc == 0) { + return FALSE; - } else if(rc != child->pid) { - signo = signal; - exitcode = 1; - status = 1; - crm_perror(LOG_ERR, "Call to waitpid(%d) failed", child->pid); + } else if(rc != child->pid) { + signo = SIGCHLD; + exitcode = 1; + status = 1; + crm_perror(LOG_ERR, "Call to waitpid(%d) failed", child->pid); - } else { - crm_trace("Managed process %d exited: %p", child->pid, child); + } else { + crm_trace("Managed process %d exited: %p", child->pid, child); - if (WIFEXITED(status)) { - exitcode = WEXITSTATUS(status); - crm_trace("Managed process %d (%s) exited with rc=%d", child->pid, child->desc, exitcode); + if (WIFEXITED(status)) { + exitcode = WEXITSTATUS(status); + crm_trace("Managed process %d (%s) exited with rc=%d", child->pid, child->desc, exitcode); - } else if (WIFSIGNALED(status)) { - signo = WTERMSIG(status); - crm_trace("Managed process %d (%s) exited with signal=%d", child->pid, child->desc, signo); - } + } else if (WIFSIGNALED(status)) { + signo = WTERMSIG(status); + crm_trace("Managed process %d (%s) exited with signal=%d", child->pid, child->desc, signo); + } #ifdef WCOREDUMP - if (WCOREDUMP(status)) { - core = 1; - crm_err("Managed process %d (%s) dumped core", child->pid, child->desc); - } -#endif + if (WCOREDUMP(status)) { + core = 1; + crm_err("Managed process %d (%s) dumped core", child->pid, child->desc); } +#endif + } - if (child->callback) { - child->callback(child, child->pid, core, signo, exitcode); - } + if (child->callback) { + child->callback(child, child->pid, core, signo, exitcode); + } + return TRUE; +} - crm_trace("Removing process entry %p for %d", child, child->pid); +static void +child_death_dispatch(int signal) +{ + GListPtr iter = child_list; + gboolean exited; + + while(iter) { + GListPtr saved = NULL; + mainloop_child_t *child = iter->data; + exited = child_waitpid(child, WNOHANG); saved = iter; iter = iter->next; + if (exited == FALSE) { + continue; + } + crm_trace("Removing process entry %p for %d", child, child->pid); + child_list = g_list_remove_link(child_list, saved); g_list_free(saved); + child_free(child); + } +} - if (child->timerid != 0) { - crm_trace("Removing timer %d", child->timerid); - g_source_remove(child->timerid); - child->timerid = 0; +gboolean +mainloop_child_kill(pid_t pid) +{ + GListPtr iter; + mainloop_child_t *child = NULL; + + for (iter = child_list; iter != NULL; iter = iter->next) { + child = iter->data; + if (pid == child->pid) { + break; } - free(child->desc); - free(child); } + + if (child == NULL) { + return FALSE; + } + + if (child_kill_helper(child) != 0) { + /* failed to terminate child process */ + return FALSE; + } + + /* It is impossible to block SIGKILL, this allows us to + * call waitpid without WNOHANG here */ + if (child_waitpid(child, 0) == FALSE) { + /* not much we can do if this occurs */ + return FALSE; + } + + child_list = g_list_remove(child_list, child); + child_free(child); + return TRUE; } /* Create/Log a new tracked process diff --git a/lib/services/services.c b/lib/services/services.c index a9a7fd4..ce97bd5 100644 --- a/lib/services/services.c +++ b/lib/services/services.c @@ -382,8 +382,15 @@ services_action_cancel(const char *name, const char *action, int interval) } services_action_free(op); } else { - crm_info("Cancelling op: %s will occur once operation completes", id); + int rc; + crm_info("Cancelling in-flight op: performing early termination of %s", id); op->cancel = 1; + rc = mainloop_child_kill(op->pid); + if (rc != 0 ) { + /* even though the early termination failed, + * the op will be marked as cancelled once it completes. */ + crm_err("Termination of %s failed", id); + } } return TRUE; diff --git a/lrmd/lrmd.c b/lrmd/lrmd.c index a3a00ab..9edc749 100644 --- a/lrmd/lrmd.c +++ b/lrmd/lrmd.c @@ -314,6 +314,11 @@ schedule_lrmd_cmd(lrmd_rsc_t * rsc, lrmd_cmd_t * cmd) return; } + /* crmd expects lrmd to automatically cancel recurring ops before rsc stops. */ + if (rsc && safe_str_eq(cmd->action, "stop")) { + cancel_all_recurring(rsc, NULL); + } + rsc->pending_ops = g_list_append(rsc->pending_ops, cmd); #ifdef HAVE_SYS_TIMEB_H ftime(&cmd->t_queue); @@ -502,11 +507,6 @@ cmd_finalize(lrmd_cmd_t * cmd, lrmd_rsc_t * rsc) send_cmd_complete_notify(cmd); - /* crmd expects lrmd to automatically cancel recurring ops after rsc stops */ - if (rsc && safe_str_eq(cmd->action, "stop")) { - cancel_all_recurring(rsc, NULL); - } - if (cmd->interval && (cmd->lrmd_op_status == PCMK_LRM_OP_CANCELLED)) { if (rsc) { rsc->recurring_ops = g_list_remove(rsc->recurring_ops, cmd); -- 1.9.1 debian/patches/Fix-lrmd-Prevent-glib-timers-removed-more-than-once.patch0000664000000000000000000000360412444523741023441 0ustar From 568e41db929a34106c8c2ff7c48716ab5c13ef49 Mon Sep 17 00:00:00 2001 From: Andrew Beekhof Date: Mon, 13 Oct 2014 13:30:58 +1100 Subject: [PATCH] Fix: lrmd: Prevent glib assert triggered by timers being removed from mainloop more than once --- lib/services/services.c | 3 +++ lib/services/services_linux.c | 1 + 2 files changed, 4 insertions(+) diff --git a/lib/services/services.c b/lib/services/services.c index 8590b56..753e257 100644 --- a/lib/services/services.c +++ b/lib/services/services.c @@ -313,6 +313,7 @@ services_action_free(svc_action_t * op) if (op->opaque->repeat_timer) { g_source_remove(op->opaque->repeat_timer); + op->opaque->repeat_timer = 0; } if (op->opaque->stderr_gsource) { mainloop_del_fd(op->opaque->stderr_gsource); @@ -425,6 +426,7 @@ services_action_kick(const char *name, const char *action, int interval /* ms */ } else { if (op->opaque->repeat_timer) { g_source_remove(op->opaque->repeat_timer); + op->opaque->repeat_timer = 0; } recurring_action_timer(op); return TRUE; @@ -459,6 +461,7 @@ handle_duplicate_recurring(svc_action_t * op, void (*action_callback) (svc_actio if (dup->pid != 0) { if (op->opaque->repeat_timer) { g_source_remove(op->opaque->repeat_timer); + op->opaque->repeat_timer = 0; } recurring_action_timer(dup); } diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index 961ff18..2279e4e 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -227,6 +227,7 @@ recurring_action_timer(gpointer data) op->stdout_data = NULL; free(op->stderr_data); op->stderr_data = NULL; + op->opaque->repeat_timer = 0; services_action_async(op, NULL); return FALSE; -- 1.9.1 debian/patches/default_file_for_pacemaker.patch0000664000000000000000000001222412176656742017162 0ustar diff -ruN pacemaker-master.orig/mcp/pacemaker.sysconfig pacemaker-master/mcp/pacemaker.sysconfig --- pacemaker-master.orig/mcp/pacemaker.sysconfig 2013-08-01 05:46:22.000000000 +0000 +++ pacemaker-master/mcp/pacemaker.sysconfig 2013-08-02 07:20:53.113265865 +0000 @@ -2,46 +2,46 @@ # Turn on special handling for CMAN clusters in the init script # Without this, fenced (and by inference, cman) cannot reliably be made to shut down -# PCMK_STACK=cman +# export PCMK_STACK=cman #==#==# Variables that control logging # Enable debug logging globally or per-subsystem # Multiple subsystems may me listed separated by commas -# eg. PCMK_debug=crmd,pengine -# PCMK_debug=yes|no|crmd|pengine|cib|stonith-ng|attrd|pacemakerd +# eg. export PCMK_debug=crmd,pengine +# export PCMK_debug=yes|no|crmd|pengine|cib|stonith-ng|attrd|pacemakerd # Send INFO (and higher) messages to the named log file # Additional messages may also appear here depending on any configured debug and trace settings # By default Pacemaker will inherit the logfile specified in corosync.conf -# PCMK_debugfile=/var/log/pacemaker.log +# export PCMK_debugfile=/var/log/pacemaker.log # Specify an alternate syslog target for NOTICE (and higher) messages # Use 'none' to disable - not recommended # The default value is 'daemon' -# PCMK_logfacility=none|daemon|user|local0|local1|local2|local3|local4|local5|local6|local7 +# export PCMK_logfacility=none|daemon|user|local0|local1|local2|local3|local4|local5|local6|local7 # Send all messages up-to-and-including the configured priority to syslog # A value of 'info' will be far too verbose for most installations and 'debug' is almost certain to send you blind # The default value is 'notice' -# PCMK_logpriority=emerg|alert|crit|error|warning|notice|info|debug +# export PCMK_logpriority=emerg|alert|crit|error|warning|notice|info|debug # Log all messages from a comma-separated list of functions -# PCMK_trace_functions=function1,function2,function3 +# export PCMK_trace_functions=function1,function2,function3 # Log all messages from a comma-separated list of files (no path) -# Supports wildcards eg. PCMK_trace_files=prefix*.c -# PCMK_trace_files=file.c,other.h +# Supports wildcards eg. export PCMK_trace_files=prefix*.c +# export PCMK_trace_files=file.c,other.h # Log all messages matching comma-separated list of formats -# PCMK_trace_formats="Sent delete %d" +# export PCMK_trace_formats="Sent delete %d" # Log all messages from a comma-separated list of tags -# PCMK_trace_tags=tag1,tag2 +# export PCMK_trace_tags=tag1,tag2 # Dump the blackbox whenever the message at function and line is printed -# eg. PCMK_trace_blackbox=te_graph_trigger:223,unpack_clone:81 -# PCMK_trace_blackbox=fn:line,fn2:line2,... +# eg. export PCMK_trace_blackbox=te_graph_trigger:223,unpack_clone:81 +# export PCMK_trace_blackbox=fn:line,fn2:line2,... # Enable blackbox logging globally or per-subsystem # The blackbox contains a rolling buffer of all logs (including info+debug+trace) @@ -50,37 +50,37 @@ # The blackbox recorder can also be enabled for Pacemaker daemons at runtime by sending SIGUSR1 # # Multiple subsystems may me listed separated by commas -# eg. PCMK_blackbox=crmd,pengine -# PCMK_blackbox=yes|no|crmd|pengine|cib|stonith-ng|attrd|pacemakerd +# eg. export PCMK_blackbox=crmd,pengine +# export PCMK_blackbox=yes|no|crmd|pengine|cib|stonith-ng|attrd|pacemakerd #==#==# Advanced use only # Enable this for compatibility with older corosync (prior to 2.0) # based clusters which used the nodes uname as its uuid also -# PCMK_uname_is_uuid=no +# export PCMK_uname_is_uuid=no # Specify an alternate location for RNG schemas and XSL transforms # Mostly only useful for developer testing -# PCMK_schema_directory=/some/path +# export PCMK_schema_directory=/some/path # Enable this for rebooting this machine at the time of process (subsystem) failure -# PCMK_fail_fast=no +# export PCMK_fail_fast=no #==#==# Pacemaker Remote # Use a custom directory for finding the authkey. -# PCMK_authkey_location=/etc/pacemaker/authkey +# export PCMK_authkey_location=/etc/pacemaker/authkey # # Specify a custom port for Pacemaker Remote connections -# PCMK_remote_port=3121 +# export PCMK_remote_port=3121 #==#==# IPC # Force use of a particular class of IPC connection -# PCMK_ipc_type=shared-mem|socket|posix|sysv +# export PCMK_ipc_type=shared-mem|socket|posix|sysv # Specify an IPC buffer size in bytes # Useful when connecting to really big clusters that exceed the default 20k buffer -# PCMK_ipc_buffer=20480 +# export PCMK_ipc_buffer=20480 #==#==# Profiling and memory leak testing @@ -88,8 +88,8 @@ # G_SLICE=always-malloc # MALLOC_PERTURB_=221 # or 0 # MALLOC_CHECK_=3 # or 0,1,2 -# PCMK_valgrind_enabled=yes -# PCMK_valgrind_enabled=cib,crmd -# PCMK_callgrind_enabled=yes -# PCMK_callgrind_enabled=cib,crmd +# export PCMK_valgrind_enabled=yes +# export PCMK_valgrind_enabled=cib,crmd +# export PCMK_callgrind_enabled=yes +# export PCMK_callgrind_enabled=cib,crmd # VALGRIND_OPTS="--leak-check=full --trace-children=no --num-callers=25 --log-file=/var/lib/pacemaker/valgrind-%p --suppressions=/usr/share/pacemaker/tests/valgrind-pcmk.suppressions --gen-suppressions=all" debian/patches/Fix-services-Remove-cancelled-recurring-ops-from-internal-lists.patch0000664000000000000000000000260712464512113026062 0ustar Description: Fix: services: Remove cancelled recurring ops from internal Origin: upstream, commit: b8abdb3850b71efad0cc0c14ba7e4995a23068d1 Author: Andrew Beekhof Bug-Ubuntu: https://bugs.launchpad.net/bugs/1412962 Last-Update: 2015-01-26 --- pacemaker-1.1.10+git20130802.orig/lib/services/services.c +++ pacemaker-1.1.10+git20130802/lib/services/services.c @@ -355,6 +355,7 @@ cancel_recurring_action(svc_action_t * o if (op->opaque->repeat_timer) { g_source_remove(op->opaque->repeat_timer); + op->opaque->repeat_timer = 0; } return TRUE; @@ -372,13 +373,16 @@ services_action_cancel(const char *name, return FALSE; } + /* Always kill the recurring timer */ + cancel_recurring_action(op); + if (op->pid == 0) { - cancel_recurring_action(op); op->status = PCMK_LRM_OP_CANCELLED; if (op->opaque->callback) { op->opaque->callback(op); } services_action_free(op); + } else { int rc; crm_info("Cancelling in-flight op: performing early termination of %s", id); @@ -388,6 +392,7 @@ services_action_cancel(const char *name, /* even though the early termination failed, * the op will be marked as cancelled once it completes. */ crm_err("Termination of %s failed", id); + return FALSE; } } debian/patches/series0000664000000000000000000000101113114325060012020 0ustar raexecupstart.patch default_file_for_pacemaker.patch Fix-services-Do-not-allow-duplicate-recurring-op-ent.patch High-lrmd-Merge-duplicate-recurring-monitor-operatio.patch Fix-lrmd-Cancel-recurring-operations-before-stop-act.patch Fix-lrmd-Prevent-glib-timers-removed-more-than-once.patch Fix-stonith-ng-Reset-mainloop-source-IDs-after-removing.patch Fix-services-Fixes-segfault-associated-with-cancelling-inflight-operations.patch Fix-services-Remove-cancelled-recurring-ops-from-internal-lists.patch CVE-2016-7035.patch debian/patches/fix_dir_creation.patch0000664000000000000000000000451612035251070015151 0ustar diff --git a/mcp/pacemaker.c b/mcp/pacemaker.c index cfa762e..6cc64c5 100644 --- a/mcp/pacemaker.c +++ b/mcp/pacemaker.c @@ -631,6 +631,16 @@ struct qb_ipcs_service_handlers ipc_callbacks = }; /* *INDENT-ON* */ +static void +mcp_chown(const char *path, uid_t uid, gid_t gid) +{ + int rc = chown(path, uid, gid); + if(rc < 0) { + crm_warn("Cannot change the ownership of %s to user %s and gid %d: %s", + path, CRM_DAEMON_USER, gid, pcmk_strerror(errno)); + } +} + int main(int argc, char **argv) { @@ -775,20 +785,30 @@ struct qb_ipcs_service_handlers ipc_callbacks = } mkdir(CRM_STATE_DIR, 0750); - rc = chown(CRM_STATE_DIR, pcmk_uid, pcmk_gid); - if(rc < 0) { - crm_warn("Cannot change the ownership of %s to user %s and gid %d", - CRM_STATE_DIR, CRM_DAEMON_USER, pcmk_gid); - } + mcp_chown(CRM_STATE_DIR, pcmk_uid, pcmk_gid); /* Used by stonithd */ build_path(HA_STATE_DIR "/heartbeat", 0755); + mcp_chown(HA_STATE_DIR, pcmk_uid, pcmk_gid); /* Used by RAs - Leave owned by root */ build_path(CRM_RSCTMP_DIR, 0755); /* Used to store core files in */ build_path(CRM_CORE_DIR, 0755); + mcp_chown(CRM_CORE_DIR, pcmk_uid, pcmk_gid); + + /* Used to store blackbox dumps in */ + build_path(CRM_BLACKBOX_DIR, 0755); + mcp_chown(CRM_BLACKBOX_DIR, pcmk_uid, pcmk_gid); + + /* Used to store policy engine inputs in */ + build_path(PE_STATE_DIR, 0755); + mcp_chown(PE_STATE_DIR, pcmk_uid, pcmk_gid); + + /* Used to store the cluster configuration */ + build_path(CRM_CONFIG_DIR, 0755); + mcp_chown(CRM_CONFIG_DIR, pcmk_uid, pcmk_gid); /* Per-user core directories */ if (mkdir(CRM_CORE_DIR"/root", 0700) < 0 && errno != EEXIST) { @@ -798,9 +818,7 @@ struct qb_ipcs_service_handlers ipc_callbacks = if (mkdir(CRM_CORE_DIR"/"CRM_DAEMON_USER, 0700) < 0 && errno != EEXIST) { crm_perror(LOG_INFO, "Could not create %s", CRM_CORE_DIR"/"CRM_DAEMON_USER); } else { - if(chown(CRM_CORE_DIR"/"CRM_DAEMON_USER, pcmk_uid, pcmk_gid) < 0) { - crm_perror(LOG_ERR, "Could not change the ownership of %s to %s", CRM_CORE_DIR"/"CRM_DAEMON_USER, CRM_DAEMON_USER); - } + mcp_chown(CRM_CORE_DIR, pcmk_uid, pcmk_gid); } client_list = g_hash_table_new(g_direct_hash, g_direct_equal); debian/patches/High-lrmd-Merge-duplicate-recurring-monitor-operatio.patch0000664000000000000000000001531112410333251023756 0ustar Description: [PATCH 2/3] High: lrmd: Merge duplicate recurring monitor operations Never allow two instances of the same recurring monitor operation to exist in the lrmd. Conflicts: include/crm/services.h * This conflict was due to different functions declared in services.h. * resources_find_service_class() does not exist in 1.1.10. Origin: upstream, commit: c29ab27 Author: David Vossel Last-Updated: 2014-08-08 Bug-Ubuntu: https://bugs.launchpad.net/bugs/1353473 Signed-off-by: Rafael David Tinoco --- include/crm/services.h | 5 +++ lib/services/services.c | 29 +++++++++++++++ lrmd/lrmd.c | 93 ++++++++++++++++++++++++++++++++++++++++++------- 3 files changed, 114 insertions(+), 13 deletions(-) diff --git a/include/crm/services.h b/include/crm/services.h index fb5c6b0..6c34782 100644 --- a/include/crm/services.h +++ b/include/crm/services.h @@ -231,6 +231,11 @@ enum nagios_exitcode { int timeout /* ms */ , GHashTable * params); /** + * Kick a recurring action so it is scheduled immediately for re-execution + */ + gboolean services_action_kick(const char *name, const char *action, int interval /* ms */); + +/** * Utilize services API to execute an arbitrary command. * * This API has useful infrastructure in place to be able to run a command diff --git a/lib/services/services.c b/lib/services/services.c index 373736e..a9a7fd4 100644 --- a/lib/services/services.c +++ b/lib/services/services.c @@ -389,6 +389,35 @@ services_action_cancel(const char *name, const char *action, int interval) return TRUE; } +gboolean +services_action_kick(const char *name, const char *action, int interval /* ms */) +{ + svc_action_t * op = NULL; + char *id = NULL; + + if (asprintf(&id, "%s_%s_%d", name, action, interval) == -1) { + return FALSE; + } + + op = g_hash_table_lookup(recurring_actions, id); + free(id); + + if (op == NULL) { + return FALSE; + } + + if (op->pid) { + return TRUE; + } else { + if (op->opaque->repeat_timer) { + g_source_remove(op->opaque->repeat_timer); + } + recurring_action_timer(op); + return TRUE; + } + +} + /* add new recurring operation, check for duplicates. * - if duplicate found, return TRUE, immediately reschedule op. * - if no dup, return FALSE, inserve into recurring op list.*/ diff --git a/lrmd/lrmd.c b/lrmd/lrmd.c index a4747cb..a3a00ab 100644 --- a/lrmd/lrmd.c +++ b/lrmd/lrmd.c @@ -122,6 +122,17 @@ log_execute(lrmd_cmd_t * cmd) cmd->rsc_id, cmd->action, cmd->call_id); } +static const char * +normalize_action_name(lrmd_rsc_t * rsc, const char *action) +{ + if (safe_str_eq(action, "monitor") && + (safe_str_eq(rsc->class, "lsb") || + safe_str_eq(rsc->class, "service") || safe_str_eq(rsc->class, "systemd"))) { + return "status"; + } + return action; +} + static lrmd_rsc_t * build_rsc_from_xml(xmlNode * msg) { @@ -233,13 +244,76 @@ start_delay_helper(gpointer data) return FALSE; } +static gboolean +merge_recurring_duplicate(lrmd_rsc_t * rsc, lrmd_cmd_t * cmd) +{ + GListPtr gIter = NULL; + lrmd_cmd_t * dup = NULL; + gboolean dup_pending = FALSE; + + if (cmd->interval == 0) { + return 0; + } + + for (gIter = rsc->pending_ops; gIter != NULL; gIter = gIter->next) { + dup = gIter->data; + if (safe_str_eq(cmd->action, dup->action) && cmd->interval == dup->interval) { + dup_pending = TRUE; + goto merge_dup; + } + } + + /* if dup is in recurring_ops list, that means it has already executed + * and is in the interval loop. we can't just remove it in this case. */ + for (gIter = rsc->recurring_ops; gIter != NULL; gIter = gIter->next) { + dup = gIter->data; + if (safe_str_eq(cmd->action, dup->action) && cmd->interval == dup->interval) { + goto merge_dup; + } + } + + return FALSE; +merge_dup: + + /* merge */ + dup->first_notify_sent = 0; + free(dup->userdata_str); + dup->userdata_str = cmd->userdata_str; + cmd->userdata_str = NULL; + dup->call_id = cmd->call_id; + + if (safe_str_eq(rsc->class, "stonith")) { + /* if we are waiting for the next interval, kick it off now */ + if (dup_pending == TRUE) { + g_source_remove(cmd->stonith_recurring_id); + cmd->stonith_recurring_id = 0; + stonith_recurring_op_helper(cmd); + } + + } else if (dup_pending == FALSE) { + /* if we've already handed this to the service lib, kick off an early execution */ + services_action_kick(rsc->rsc_id, normalize_action_name(rsc, dup->action), dup->interval); + } + free_lrmd_cmd(cmd); + + return TRUE; +} + static void schedule_lrmd_cmd(lrmd_rsc_t * rsc, lrmd_cmd_t * cmd) { + gboolean dup_processed = FALSE; CRM_CHECK(cmd != NULL, return); CRM_CHECK(rsc != NULL, return); crm_trace("Scheduling %s on %s", cmd->action, rsc->rsc_id); + + dup_processed = merge_recurring_duplicate(rsc, cmd); + if (dup_processed) { + /* duplicate recurring cmd found, cmds merged */ + return; + } + rsc->pending_ops = g_list_append(rsc->pending_ops, cmd); #ifdef HAVE_SYS_TIMEB_H ftime(&cmd->t_queue); @@ -249,7 +323,6 @@ schedule_lrmd_cmd(lrmd_rsc_t * rsc, lrmd_cmd_t * cmd) if (cmd->start_delay) { cmd->delay_id = g_timeout_add(cmd->start_delay, start_delay_helper, cmd); } - } static void @@ -809,17 +882,6 @@ lrmd_rsc_execute_stonith(lrmd_rsc_t * rsc, lrmd_cmd_t * cmd) return rc; } -static const char * -normalize_action_name(lrmd_rsc_t * rsc, const char *action) -{ - if (safe_str_eq(action, "monitor") && - (safe_str_eq(rsc->class, "lsb") || - safe_str_eq(rsc->class, "service") || safe_str_eq(rsc->class, "systemd"))) { - return "status"; - } - return action; -} - static void dup_attr(gpointer key, gpointer value, gpointer user_data) { @@ -1129,6 +1191,7 @@ process_lrmd_rsc_exec(crm_client_t * client, uint32_t id, xmlNode * request) lrmd_cmd_t *cmd = NULL; xmlNode *rsc_xml = get_xpath_object("//" F_LRMD_RSC, request, LOG_ERR); const char *rsc_id = crm_element_value(rsc_xml, F_LRMD_RSC_ID); + int call_id; if (!rsc_id) { return -EINVAL; @@ -1140,9 +1203,13 @@ process_lrmd_rsc_exec(crm_client_t * client, uint32_t id, xmlNode * request) } cmd = create_lrmd_cmd(request, client); + call_id = cmd->call_id; + + /* Don't reference cmd after handing it off to be scheduled. + * The cmd could get merged and freed. */ schedule_lrmd_cmd(rsc, cmd); - return cmd->call_id; + return call_id; } static int -- 1.9.1 debian/patches/Fix-services-Do-not-allow-duplicate-recurring-op-ent.patch0000664000000000000000000000600212410333251023617 0ustar Description: [PATCH 1/3] Fix: services: Do not allow duplicate recurring op entries Duplicate recurring operations silently replace each other in a way that makes the original entry impossible to cancel. This can cause unexpected monitor failures to occur after resources were thought to have been stopped. Origin: upstream, commit: 48f90f6 Author: David Vossel Last-Updated: 2014-08-08 Bug-Ubuntu: https://bugs.launchpad.net/bugs/1353473 --- lib/services/services.c | 49 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 45 insertions(+), 4 deletions(-) diff --git a/lib/services/services.c b/lib/services/services.c index adfc508..373736e 100644 --- a/lib/services/services.c +++ b/lib/services/services.c @@ -304,6 +304,9 @@ services_action_free(svc_action_t * op) return; } + if (op->opaque->repeat_timer) { + g_source_remove(op->opaque->repeat_timer); + } if (op->opaque->stderr_gsource) { mainloop_del_fd(op->opaque->stderr_gsource); op->opaque->stderr_gsource = NULL; @@ -386,6 +389,44 @@ services_action_cancel(const char *name, const char *action, int interval) return TRUE; } +/* add new recurring operation, check for duplicates. + * - if duplicate found, return TRUE, immediately reschedule op. + * - if no dup, return FALSE, inserve into recurring op list.*/ +static gboolean +handle_duplicate_recurring(svc_action_t * op, void (*action_callback) (svc_action_t *)) +{ + svc_action_t * dup = NULL; + + if (recurring_actions == NULL) { + recurring_actions = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, NULL); + return FALSE; + } + + /* check for duplicates */ + dup = g_hash_table_lookup(recurring_actions, op->id); + + if (dup && (dup != op)) { + /* update user data */ + if (op->opaque->callback) { + dup->opaque->callback = op->opaque->callback; + dup->cb_data = op->cb_data; + op->cb_data = NULL; + } + /* immediately execute the next interval */ + if (dup->pid != 0) { + if (op->opaque->repeat_timer) { + g_source_remove(op->opaque->repeat_timer); + } + recurring_action_timer(dup); + } + /* free the dup. */ + services_action_free(op); + return TRUE; + } + + return FALSE; +} + gboolean services_action_async(svc_action_t * op, void (*action_callback) (svc_action_t *)) { @@ -393,11 +434,11 @@ services_action_async(svc_action_t * op, void (*action_callback) (svc_action_t * op->opaque->callback = action_callback; } - if (recurring_actions == NULL) { - recurring_actions = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, NULL); - } - if (op->interval > 0) { + if (handle_duplicate_recurring(op, action_callback) == TRUE) { + /* entry rescheduled, dup freed */ + return TRUE; + } g_hash_table_replace(recurring_actions, op->id, op); } #if SUPPORT_UPSTART -- 1.9.1 debian/patches/raexecupstart.patch0000664000000000000000000000403111571740662014541 0ustar Index: pacemaker-1.1.5/xml/crm-1.0.dtd =================================================================== --- pacemaker-1.1.5.orig/xml/crm-1.0.dtd 2011-02-23 11:37:45.054047000 -0500 +++ pacemaker-1.1.5/xml/crm-1.0.dtd 2011-02-23 11:38:39.887424200 -0500 @@ -215,7 +215,7 @@