summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>2017-02-07 09:54:25 +0100
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>2017-02-07 09:54:25 +0100
commit1ed607bbfac03c45502e9989fa654001639fa8c7 (patch)
tree1a95d00ebb419877c924bad40162f02a0f573f4a
parentf902ca22801221c516b2dc70395e94c651f7c61d (diff)
Temp: fuel-library: Fix MySQL OCF race (backport)
JIRA: FUEL-251 Change-Id: I5e6560d494b60721770faf0ed09a72e1a4818d8f Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
-rw-r--r--patches/fuel-library/upstream-backports/0001-Fix-mysql-OCF-race.patch125
1 files changed, 125 insertions, 0 deletions
diff --git a/patches/fuel-library/upstream-backports/0001-Fix-mysql-OCF-race.patch b/patches/fuel-library/upstream-backports/0001-Fix-mysql-OCF-race.patch
new file mode 100644
index 00000000..3159f537
--- /dev/null
+++ b/patches/fuel-library/upstream-backports/0001-Fix-mysql-OCF-race.patch
@@ -0,0 +1,125 @@
+From: Sergii Golovatiuk <sgolovatiuk@mirantis.com>
+Date: Fri, 20 Jan 2017 20:09:13 +0100
+Subject: [PATCH] Fix mysql OCF race
+
+- Fix bug
+- Fix issues found in bashate
+
+Closes-Bug: #1658144
+
+Change-Id: I93e9ab269d3ad4a285154fafcac6426ef36f6b52
+---
+ files/fuel-ha-utils/ocf/mysql-wss | 41 +++++++++++++++++++++------------------
+ 1 file changed, 22 insertions(+), 19 deletions(-)
+
+diff --git a/files/fuel-ha-utils/ocf/mysql-wss b/files/fuel-ha-utils/ocf/mysql-wss
+index 64d3477..43e7f29 100755
+--- a/files/fuel-ha-utils/ocf/mysql-wss
++++ b/files/fuel-ha-utils/ocf/mysql-wss
+@@ -72,9 +72,9 @@ MYSQL=$OCF_RESKEY_client_binary
+ HOSTNAME=$(uname -n)
+ MYSQL_OPTIONS_LOCAL="-S $OCF_RESKEY_socket --connect_timeout=10"
+ if [ "${OCF_RESKEY_test_conf}" ]; then
+- MYSQL_OPTIONS_TEST="--defaults-extra-file=${OCF_RESKEY_test_conf} ${MYSQL_OPTIONS_LOCAL}"
++ MYSQL_OPTIONS_TEST="--defaults-extra-file=${OCF_RESKEY_test_conf} ${MYSQL_OPTIONS_LOCAL}"
+ else
+- MYSQL_OPTIONS_TEST="$MYSQL_OPTIONS_LOCAL --user=$OCF_RESKEY_test_user --password=$OCF_RESKEY_test_passwd"
++ MYSQL_OPTIONS_TEST="$MYSQL_OPTIONS_LOCAL --user=$OCF_RESKEY_test_user --password=$OCF_RESKEY_test_passwd"
+ fi
+ #######################################################################
+ usage() {
+@@ -337,7 +337,8 @@ clear_node_pc()
+
+ get_master_timeout() {
+ local LH="${LL} get_master_timeout():"
+- local timeout=$(crm_attribute --quiet --name galera_master_timeout \
++ local timeout
++ timeout=$(crm_attribute --quiet --name galera_master_timeout \
+ --query --default=$OCF_RESKEY_master_timeout -q | sed -e '/(null)/d')
+
+ ocf_log info "${LH} Setting timeout $timeout"
+@@ -374,8 +375,8 @@ get_node_gtid_with_retry() {
+
+ GTID=$(get_node_gtid $NODE)
+
+- if [ "$GTID"="0" ]; then
+- sleep $[ ( $RANDOM % 10 ) + 1]
++ if [ "$GTID" = "0" ]; then
++ sleep $(( ( $RANDOM % 10 ) + 1 ))
+ GTID=$(get_node_gtid $NODE)
+ fi
+
+@@ -384,12 +385,16 @@ get_node_gtid_with_retry() {
+
+ check_if_reelection_needed() {
+ local LH="${LL} check_if_reelection_needed()"
+- local PARTITION_WITH_QUORUM=$(crm_node -q | sed -e '/(null)/d')
+- local RESOURCE_NAME=$(echo $OCF_RESOURCE_INSTANCE | cut -f1 -d":")
+- local NODE_COUNT=$(nodes_in_cluster | wc -w)
++ local PARTITION_WITH_QUORUM
++ local RESOURCE_NAME
++ local NODE_COUNT
+ local RUNNING_INSTANCES
+ local rc
+
++ PARTITION_WITH_QUORUM=$(crm_node -q | sed -e '/(null)/d')
++ RESOURCE_NAME=$(echo $OCF_RESOURCE_INSTANCE | cut -f1 -d":")
++ NODE_COUNT=$(nodes_in_cluster | wc -w)
++
+ if [ $PARTITION_WITH_QUORUM -eq 1 -o $NODE_COUNT -eq 1 ]; then
+ RUNNING_INSTANCES=$(crm_resource \
+ --quiet --locate --resource $RESOURCE_NAME | sed -e '/(null)/d' | wc -l 2> /dev/null)
+@@ -452,8 +457,7 @@ get_master() {
+ ocf_log info "${LH} The most seen GTID is: ${MASTER_GTID}"
+ for NODE in $NODES; do
+ NODE_SCORE=$(crm_simulate -Ls | awk "/${OCF_RESOURCE_INSTANCE}/ && /clone_color/ && ! /${OCF_RESOURCE_INSTANCE}:/ && /${NODE}/ {print \$NF}")
+- if [[ $NODE_SCORE =~ ^-?[0-9]+$ && $NODE_SCORE -le 0 || $NODE_SCORE = "-INFINITY" || -z $NODE_SCORE ]]
+- then
++ if [[ $NODE_SCORE =~ ^-?[0-9]+$ && $NODE_SCORE -le 0 || $NODE_SCORE = "-INFINITY" || -z $NODE_SCORE ]]; then
+ ocf_log info "${LH} Skipping node $NODE as it is not eligible for running the resource. Its score is ${NODE_SCORE:-NULL}"
+ continue
+ fi
+@@ -487,11 +491,13 @@ check_if_galera_pc() {
+ local LH="${LL} check_if_galera_pc():"
+ local NODES
+ local MASTER
+- local timeout=$(get_master_timeout)
++ local timeout
+ local GTID
+ local pid
+ local pcnum=0
+
++ timeout=$(get_master_timeout)
++
+ ocf_log info "${LH} Checking if Primary Component"
+
+ while [ $timeout -gt 0 ]; do
+@@ -508,15 +514,12 @@ check_if_galera_pc() {
+ ocf_log info "${LH} My neighbour is Primary Component with GTID: ${GTID}"
+ if check_if_new_cluster
+ then
+- for node in ${NODES}
+- do
++ for node in ${NODES}; do
+ is_pc=$(crm_attribute --quiet --node ${node} --lifetime reboot --query --name is_pc | sed -e '/(null)/d')
+- if [ ${is_pc} == "true" ]
+- then
+- let pcnum=pcnum+1
++ if [ "${is_pc}" = "true" ]; then
++ pcnum=$((pcnum + 1))
+ fi
+- if [ ${pcnum} -gt 1 ]
+- then
++ if [ ${pcnum} -gt 1 ]; then
+ ocf_log err "${LH} But I'm running a new cluster, PID:${pid}, this is a split-brain!"
+ exit $OCF_ERR_GENERIC
+ fi
+@@ -527,7 +530,7 @@ check_if_galera_pc() {
+ fi
+
+ sleep 10
+- (( timeout -= 10 ))
++ timeout=$((timeout - 10))
+ ocf_log info "${LH} Waiting for master. ${timeout} seconds left"
+ done
+