[DRBD-user] [PATCH 3/4] crm-fence-peer.sh: Guess if pacemaker is about to fence our peer sometimes fails with 1.1.11+

Vladislav Bogdanov bubble at hoster-ok.com
Mon Feb 29 16:10:37 CET 2016

Note: "permalinks" may not be as permanent as we would like,
direct links of old sources may well be a few messages off.


---
 scripts/crm-fence-peer.sh |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/scripts/crm-fence-peer.sh b/scripts/crm-fence-peer.sh
index 67f3457..83bae72 100755
--- a/scripts/crm-fence-peer.sh
+++ b/scripts/crm-fence-peer.sh
@@ -531,6 +531,21 @@ guess_if_pacemaker_will_fence()
 	[[ $crmd = "banned" ]] && will_fence=true
 	if [[ ${expected-down} = "down" && $in_ccm = "false"  && $crmd != "online" ]]; then
 		: "pacemaker considers this as clean down"
+	elif [[ $crmd/$join/$expected = "offline/down/down" ]] ; then
+		# Check if pacemaker is simply shutdown, but membership/quorum is possibly still established (corosync2/cman)
+		# 1.1.11 will set expected="down" on a clean shutdown too
+		# Look for "shutdown" transient node attribute
+		local node_attributes=$(set +x; echo "$cib_xml" | awk "/<node_state [^\n]*uname=\"$DRBD_PEER\"/,/<\/instance_attributes>/"| grep -F -e "<nvpair ")
+		if [ -n "${node_attributes}" ] ; then
+			local shut_down=$(set +x; echo "$node_attributes" | awk '/ name="shutdown"/ {if (match($0, /value=\"([[:digit:]]+)\"/, values)) {print values[1]} }')
+			if [ -n "${shut_down}" ] ; then
+				: "pacemaker considers this as clean down"
+			else
+				will_fence=true
+			fi
+		else
+			will_fence=true
+		fi
 	elif [[ $in_ccm = false ]] || [[ $crmd != "online" ]]; then
 		will_fence=true
 	fi
-- 
1.7.1




More information about the drbd-user mailing list