Hello community, here is the log from the commit of package pacemaker for openSUSE:Factory checked in at 2016-07-21 07:53:29 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pacemaker (Old) and /work/SRC/openSUSE:Factory/.pacemaker.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pacemaker" Changes: -------- --- /work/SRC/openSUSE:Factory/pacemaker/pacemaker.changes 2016-07-12 23:44:48.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.pacemaker.new/pacemaker.changes 2016-07-21 07:53:31.000000000 +0200 @@ -1,0 +2,11 @@ +Fri Jul 8 09:58:46 UTC 2016 - y...@suse.com + +- libcrmcommon: properly handle XML comments when comparing v2 patchset diffs +- crmd: don't abort transitions for CIB comment changes +- libcrmcommon: log XML comments correctly +- libcrmcommon: remove extraneous format specifier from log message +- crm_mon: Avoid logging errors for any CIB changes that we don't care about (bsc#986931) +- crmd: When node load was reduced, crmd carries out a feasible action. +- Upstream version cs: 58fef06198fef17873d0d2e2d0cc5c7db73c5724 + +------------------------------------------------------------------- @@ -665 +676 @@ -- crmd/pengine: implement on-fail=ignore without allow-fail +- crmd/pengine: implement on-fail=ignore without allow-fail (bsc#981731) @@ -669,4 +680,4 @@ -- crmd/pengine: handle on-fail=ignore properly -- crmd: respect start-failure-is-fatal even for artifically injected events -- crmd: don't update fail count twice for same failure (bsc#950450) -- crmd: report operation rc as advertised instead of status +- crmd/pengine: handle on-fail=ignore properly (bsc#981731) +- crmd: respect start-failure-is-fatal even for artifically injected events (bsc#981731) +- crmd: don't update fail count twice for same failure (bsc#950450, bsc#981731) +- crmd: report operation rc as advertised instead of status (bsc#981731) Old: ---- pacemaker-1.1.15+git20160701.630d0d1.tar.bz2 New: ---- pacemaker-1.1.15+git20160708.58fef06.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pacemaker.spec ++++++ --- /var/tmp/diff_new_pack.WCRcRP/_old 2016-07-21 07:53:32.000000000 +0200 +++ /var/tmp/diff_new_pack.WCRcRP/_new 2016-07-21 07:53:32.000000000 +0200 @@ -35,7 +35,7 @@ # We generate docs using Publican, Asciidoc and Inkscape, but they're not available everywhere %bcond_with doc Name: pacemaker -Version: 1.1.15+git20160701.630d0d1 +Version: 1.1.15+git20160708.58fef06 Release: 0 Summary: Scalable High-Availability cluster resource manager License: GPL-2.0 and GPL-2.0+ and LGPL-2.1+ ++++++ _service ++++++ --- /var/tmp/diff_new_pack.WCRcRP/_old 2016-07-21 07:53:32.000000000 +0200 +++ /var/tmp/diff_new_pack.WCRcRP/_new 2016-07-21 07:53:32.000000000 +0200 @@ -11,7 +11,7 @@ <param name="version">1.1.15</param> --> <param name="versionformat">1.1.15+git%cd.%h</param> - <param name="revision">630d0d112092042b6f79c2a02bb442e82fee93ec</param> + <param name="revision">58fef06198fef17873d0d2e2d0cc5c7db73c5724</param> </service> <service name="recompress" mode="disabled"> ++++++ pacemaker-1.1.15+git20160701.630d0d1.tar.bz2 -> pacemaker-1.1.15+git20160708.58fef06.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pacemaker-1.1.15+git20160701.630d0d1/crmd/election.c new/pacemaker-1.1.15+git20160708.58fef06/crmd/election.c --- old/pacemaker-1.1.15+git20160701.630d0d1/crmd/election.c 2016-07-02 00:22:46.000000000 +0200 +++ new/pacemaker-1.1.15+git20160708.58fef06/crmd/election.c 2016-07-08 18:25:02.000000000 +0200 @@ -88,7 +88,7 @@ enum crmd_fsa_input current_input, fsa_data_t * msg_data) { if (fsa_state != S_ELECTION) { - crm_debug("Ignore election check: we not in an election"); + crm_debug("Ignoring election check because we are not in an election"); } else if(election_check(fsa_election)) { register_fsa_input(C_FSA_INTERNAL, I_ELECTION_DC, NULL); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pacemaker-1.1.15+git20160701.630d0d1/crmd/lrm.c new/pacemaker-1.1.15+git20160708.58fef06/crmd/lrm.c --- old/pacemaker-1.1.15+git20160701.630d0d1/crmd/lrm.c 2016-07-02 00:22:46.000000000 +0200 +++ new/pacemaker-1.1.15+git20160708.58fef06/crmd/lrm.c 2016-07-08 18:25:02.000000000 +0200 @@ -1629,7 +1629,6 @@ CRM_CHECK(xml_rsc != NULL, return); - /* only the first 16 chars are used by the LRM */ params = find_xml_node(input->xml, XML_TAG_ATTRS, TRUE); if (safe_str_eq(operation, CRMD_ACTION_DELETE)) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pacemaker-1.1.15+git20160701.630d0d1/crmd/messages.c new/pacemaker-1.1.15+git20160708.58fef06/crmd/messages.c --- old/pacemaker-1.1.15+git20160701.630d0d1/crmd/messages.c 2016-07-02 00:22:46.000000000 +0200 +++ new/pacemaker-1.1.15+git20160708.58fef06/crmd/messages.c 2016-07-08 18:25:02.000000000 +0200 @@ -34,6 +34,7 @@ #include <crmd.h> #include <crmd_messages.h> #include <crmd_lrm.h> +#include <tengine.h> #include <throttle.h> GListPtr fsa_message_queue = NULL; @@ -752,6 +753,12 @@ } else if (strcmp(op, CRM_OP_THROTTLE) == 0) { throttle_update(stored_msg); + if (AM_I_DC && transition_graph != NULL) { + if (transition_graph->complete == FALSE) { + crm_debug("The throttle changed. Trigger a graph."); + trigger_graph(); + } + } return I_NULL; } else if (strcmp(op, CRM_OP_CLEAR_FAILCOUNT) == 0) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pacemaker-1.1.15+git20160701.630d0d1/crmd/te_callbacks.c new/pacemaker-1.1.15+git20160708.58fef06/crmd/te_callbacks.c --- old/pacemaker-1.1.15+git20160701.630d0d1/crmd/te_callbacks.c 2016-07-02 00:22:46.000000000 +0200 +++ new/pacemaker-1.1.15+git20160708.58fef06/crmd/te_callbacks.c 2016-07-08 18:25:02.000000000 +0200 @@ -425,15 +425,21 @@ } if(match) { + if (match->type == XML_COMMENT_NODE) { + crm_trace("Ignoring %s operation for comment at %s", op, xpath); + continue; + } name = (const char *)match->name; } - crm_trace("Handling %s operation for %s %p, %s", op, xpath, match, name); + crm_trace("Handling %s operation for %s%s%s", + op, (xpath? xpath : "CIB"), + (name? " matched by " : ""), (name? name : "")); if(xpath == NULL) { /* Version field, ignore */ } else if(strstr(xpath, "/cib/configuration")) { - abort_transition(INFINITY, tg_restart, "Non-status change", change); + abort_transition(INFINITY, tg_restart, "Configuration change", change); break; /* Wont be packaged with any resource operations we may be waiting for */ } else if(strstr(xpath, "/"XML_CIB_TAG_TICKETS) || safe_str_eq(name, XML_CIB_TAG_TICKETS)) { @@ -502,7 +508,7 @@ } if(config) { - abort_transition(INFINITY, tg_restart, "Non-status change", change); + abort_transition(INFINITY, tg_restart, "Non-status-only change", change); } } else if(strcmp(name, XML_CIB_TAG_STATUS) == 0) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pacemaker-1.1.15+git20160701.630d0d1/lib/common/xml.c new/pacemaker-1.1.15+git20160708.58fef06/lib/common/xml.c --- old/pacemaker-1.1.15+git20160701.630d0d1/lib/common/xml.c 2016-07-02 00:22:46.000000000 +0200 +++ new/pacemaker-1.1.15+git20160708.58fef06/lib/common/xml.c 2016-07-08 18:25:02.000000000 +0200 @@ -1815,6 +1815,15 @@ __xml_accept_changes(top); } +static xmlNode * +find_element(xmlNode *haystack, xmlNode *needle) +{ + CRM_CHECK(needle != NULL, return NULL); + return (needle->type == XML_COMMENT_NODE)? + find_xml_comment(haystack, needle) + : find_entity(haystack, crm_element_name(needle), ID(needle)); +} + /* Simplified version for applying v1-style XML patches */ static void __subtract_xml_object(xmlNode * target, xmlNode * patch) @@ -1867,14 +1876,7 @@ xmlNode *target_child = cIter; cIter = __xml_next(cIter); - - if (target_child->type == XML_COMMENT_NODE) { - patch_child = find_xml_comment(patch, target_child); - - } else { - patch_child = find_entity(patch, crm_element_name(target_child), ID(target_child)); - } - + patch_child = find_element(patch, target_child); __subtract_xml_object(target_child, patch_child); } free(id); @@ -1936,13 +1938,7 @@ for (patch_child = __xml_first_child(patch); patch_child != NULL; patch_child = __xml_next(patch_child)) { - if (patch_child->type == XML_COMMENT_NODE) { - target_child = find_xml_comment(target, patch_child); - - } else { - target_child = find_entity(target, crm_element_name(patch_child), ID(patch_child)); - } - + target_child = find_element(target, patch_child); __add_xml_object(target, target_child, patch_child); } } @@ -3488,48 +3484,47 @@ char *buffer = NULL; insert_prefix(options, &buffer, &offset, &max, depth); - if(data->type == XML_COMMENT_NODE) { - buffer_print(buffer, max, offset, "<!--"); - buffer_print(buffer, max, offset, "%s", data->content); - buffer_print(buffer, max, offset, "-->"); + + if (data->type == XML_COMMENT_NODE) { + buffer_print(buffer, max, offset, "<!--%s-->", data->content); } else { buffer_print(buffer, max, offset, "<%s", name); - } - hidden = crm_element_value(data, "hidden"); - for (pIter = crm_first_attr(data); pIter != NULL; pIter = pIter->next) { - xml_private_t *p = pIter->_private; - const char *p_name = (const char *)pIter->name; - const char *p_value = crm_attr_value(pIter); - char *p_copy = NULL; + hidden = crm_element_value(data, "hidden"); + for (pIter = crm_first_attr(data); pIter != NULL; pIter = pIter->next) { + xml_private_t *p = pIter->_private; + const char *p_name = (const char *)pIter->name; + const char *p_value = crm_attr_value(pIter); + char *p_copy = NULL; + + if(is_set(p->flags, xpf_deleted)) { + continue; + } else if ((is_set(options, xml_log_option_diff_plus) + || is_set(options, xml_log_option_diff_minus)) + && strcmp(XML_DIFF_MARKER, p_name) == 0) { + continue; - if(is_set(p->flags, xpf_deleted)) { - continue; - } else if ((is_set(options, xml_log_option_diff_plus) - || is_set(options, xml_log_option_diff_minus)) - && strcmp(XML_DIFF_MARKER, p_name) == 0) { - continue; + } else if (hidden != NULL && p_name[0] != 0 && strstr(hidden, p_name) != NULL) { + p_copy = strdup("*****"); - } else if (hidden != NULL && p_name[0] != 0 && strstr(hidden, p_name) != NULL) { - p_copy = strdup("*****"); + } else { + p_copy = crm_xml_escape(p_value); + } - } else { - p_copy = crm_xml_escape(p_value); + buffer_print(buffer, max, offset, " %s=\"%s\"", p_name, p_copy); + free(p_copy); } - buffer_print(buffer, max, offset, " %s=\"%s\"", p_name, p_copy); - free(p_copy); - } - - if(xml_has_children(data) == FALSE) { - buffer_print(buffer, max, offset, "/>"); + if(xml_has_children(data) == FALSE) { + buffer_print(buffer, max, offset, "/>"); - } else if(is_set(options, xml_log_option_children)) { - buffer_print(buffer, max, offset, ">"); + } else if(is_set(options, xml_log_option_children)) { + buffer_print(buffer, max, offset, ">"); - } else { - buffer_print(buffer, max, offset, "/>"); + } else { + buffer_print(buffer, max, offset, "/>"); + } } do_crm_log_alias(log_level, file, function, line, "%s %s", prefix, buffer); @@ -4289,15 +4284,13 @@ for (cIter = __xml_first_child(old); cIter != NULL; ) { xmlNode *old_child = cIter; - xmlNode *new_child = find_entity(new, crm_element_name(cIter), ID(cIter)); + xmlNode *new_child = find_element(new, cIter); cIter = __xml_next(cIter); if(new_child) { __xml_diff_object(old_child, new_child); } else { - xml_private_t *p = old_child->_private; - /* Create then free (which will check the acls if necessary) */ xmlNode *candidate = add_node_copy(new, old_child); xmlNode *top = xmlDocGetRootElement(candidate->doc); @@ -4306,7 +4299,9 @@ __xml_acl_apply(top); /* Make sure any ACLs are applied to 'candidate' */ free_xml(candidate); - if(NULL == find_entity(new, crm_element_name(old_child), ID(old_child))) { + if (find_element(new, old_child) == NULL) { + xml_private_t *p = old_child->_private; + p->flags |= xpf_skip; } } @@ -4314,7 +4309,7 @@ for (cIter = __xml_first_child(new); cIter != NULL; ) { xmlNode *new_child = cIter; - xmlNode *old_child = find_entity(old, crm_element_name(cIter), ID(cIter)); + xmlNode *old_child = find_element(old, cIter); cIter = __xml_next(cIter); if(old_child == NULL) { @@ -4326,22 +4321,21 @@ /* Check for movement, we already checked for differences */ int p_new = __xml_offset(new_child); int p_old = __xml_offset(old_child); - xml_private_t *p = new_child->_private; if(p_old != p_new) { - crm_info("%s.%s moved from %d to %d - %d", + xml_private_t *p = new_child->_private; + + crm_info("%s.%s moved from %d to %d", new_child->name, ID(new_child), p_old, p_new); __xml_node_dirty(new); p->flags |= xpf_moved; if(p_old > p_new) { p = old_child->_private; - p->flags |= xpf_skip; - } else { p = new_child->_private; - p->flags |= xpf_skip; } + p->flags |= xpf_skip; } } } @@ -4596,13 +4590,7 @@ left_child = __xml_next(left_child)) { gboolean child_changed = FALSE; - if (left_child->type == XML_COMMENT_NODE) { - right_child = find_xml_comment(right, left_child); - - } else { - right_child = find_entity(right, crm_element_name(left_child), ID(left_child)); - } - + right_child = find_element(right, left_child); subtract_xml_object(diff, left_child, right_child, full, &child_changed, marker); if (child_changed) { *changed = TRUE; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pacemaker-1.1.15+git20160701.630d0d1/lib/pengine/unpack.c new/pacemaker-1.1.15+git20160708.58fef06/lib/pengine/unpack.c --- old/pacemaker-1.1.15+git20160701.630d0d1/lib/pengine/unpack.c 2016-07-02 00:22:46.000000000 +0200 +++ new/pacemaker-1.1.15+git20160708.58fef06/lib/pengine/unpack.c 2016-07-08 18:25:02.000000000 +0200 @@ -154,7 +154,7 @@ value = pe_pref(data_set->config_hash, XML_ATTR_HAVE_WATCHDOG); if (value && crm_is_true(value)) { - crm_notice("Relying on watchdog integration for fencing"); + crm_notice("Watchdog will be used via SBD if fencing is required"); set_bit(data_set->flags, pe_flag_have_stonith_resource); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pacemaker-1.1.15+git20160701.630d0d1/mcp/pacemaker.in new/pacemaker-1.1.15+git20160708.58fef06/mcp/pacemaker.in --- old/pacemaker-1.1.15+git20160701.630d0d1/mcp/pacemaker.in 2016-07-02 00:22:46.000000000 +0200 +++ new/pacemaker-1.1.15+git20160708.58fef06/mcp/pacemaker.in 2016-07-08 18:25:02.000000000 +0200 @@ -269,7 +269,12 @@ # [ "$PCMK_STACK" = cman ] && cman_pre_stop stop - [ "$PCMK_STACK" = cman ] && service cman stop + + # Stop cman if needed, unless --skip-cman is specified (which allows + # higher-level tooling to stop pacemaker on all nodes, then stop cman + # on all nodes, to maintain quorum for DLM-based resources while + # pacemaker shuts down). + [ "$PCMK_STACK" = cman ] && [ "$2" != "--skip-cman" ] && service cman stop ;; *) echo "usage: $0 {start|stop|restart|reload|force-reload|condrestart|try-restart|status}" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pacemaker-1.1.15+git20160701.630d0d1/tools/crm_mon.c new/pacemaker-1.1.15+git20160708.58fef06/tools/crm_mon.c --- old/pacemaker-1.1.15+git20160701.630d0d1/tools/crm_mon.c 2016-07-02 00:22:46.000000000 +0200 +++ new/pacemaker-1.1.15+git20160708.58fef06/tools/crm_mon.c 2016-07-08 18:25:02.000000000 +0200 @@ -3922,16 +3922,8 @@ handle_rsc_op(match, local_node); free(local_node); - } else if(strcmp(name, XML_TAG_TRANSIENT_NODEATTRS) == 0 - || strcmp(name, XML_TAG_ATTR_SETS) == 0 - || strcmp(name, XML_CIB_TAG_NVPAIR) == 0 - || strcmp(name, XML_CIB_TAG_TICKETS) == 0 - || strcmp(name, XML_CIB_TAG_TICKET_STATE) == 0) { - crm_trace("Ignoring %s operation for %s %p, %s", op, xpath, match, name); - } else { - crm_err("Unable to process unrecognized CIB change: %s operation for %s %p, %s", - op, xpath, match, name); + crm_trace("Ignoring %s operation for %s %p, %s", op, xpath, match, name); } } }