File pacemaker-attrd-broadcast-local-overrides-of-synced-attributes.patch of Package pacemaker.14737
commit c7eb3c49a8d356414f594643e7350cc13500321e
Author: Ken Gaillot <kgaillot@redhat.com>
Date: Thu May 25 15:44:52 2017 -0500
Low: attrd: broadcast local overrides of sync'ed attributes
In the case of an attribute that was set on a stopped node, when the node
rejoins, the peer writer will sync its attributes including that value. The
node will reject it, overriding it with the local value (empty string).
Previously, it would send that override only to the peer writer, meaning that
any other nodes would still have the previous value in memory (and would
respond to queries with it). Now, the node broadcasts any local overrides,
so that all nodes get the correct value.
diff --git a/attrd/commands.c b/attrd/commands.c
index 98b4215b9..273cbd3b8 100644
--- a/attrd/commands.c
+++ b/attrd/commands.c
@@ -855,7 +855,9 @@ attrd_peer_update(crm_node_t *peer, xmlNode *xml, const char *host, bool filter)
v->nodename, v->nodeid, v->current);
crm_xml_add_int(sync, F_ATTRD_WRITER, election_state(writer));
- send_attrd_message(peer, sync);
+
+ /* Broadcast in case any other nodes had the inconsistent value */
+ send_attrd_message(NULL, sync);
free_xml(sync);
} else if(safe_str_neq(v->current, value)) {