Merge "Choose node with largest seqno number for mariadb recovery"

This commit is contained in:
Jenkins 2016-10-09 16:48:49 +00:00 committed by Gerrit Code Review
commit b13b0aad05
3 changed files with 58 additions and 2 deletions

View File

@ -14,6 +14,60 @@
when: container_state.Running | bool
any_errors_fatal: True
- name: Cleaning up temp file on mariadb hosts
file: path=/tmp/kolla_mariadb_grastate.dat state=absent
changed_when: false
always_run: true
- name: Cleaning up temp file on localhost
local_action: file path=/tmp/kolla_mariadb_recover_inventory_name state=absent
changed_when: false
always_run: true
run_once: true
- block:
- name: Copying grastate.dat file from mariadb container
command: docker cp mariadb:/var/lib/mysql/grastate.dat /tmp/kolla_mariadb_grastate.dat
changed_when: false
- name: Print the content of grastate.dat file
command: cat /tmp/kolla_mariadb_grastate.dat
register: cat_grastate
changed_when: false
- name: Registering mariadb seqno variable
set_fact:
seqno: "{{ (cat_grastate.stdout|from_yaml).seqno }}"
changed_when: false
- name: Comparing seqno value on all mariadb hosts
shell: "if [[ {{ hostvars[inventory_hostname]['seqno'] }} -lt {{ hostvars[item]['seqno'] }} ]]; then echo {{ hostvars[item]['seqno'] }}; fi"
with_items: "{{ groups['mariadb'] }}"
changed_when: false
register: seqno_compare
- name: Writing hostname of host with the largest seqno to temp file
local_action: copy content={{ inventory_hostname }} dest=/tmp/kolla_mariadb_recover_inventory_name mode=0644
changed_when: false
when: seqno_compare.results | map(attribute='stdout') | join('') == ""
- name: Registering mariadb_recover_inventory_name from temp file
set_fact:
mariadb_recover_inventory_name: "{{ lookup('file', '/tmp/kolla_mariadb_recover_inventory_name') }}"
when:
- mariadb_recover_inventory_name is not defined
- name: Cleaning up temp file on mariadb hosts
file: path=/tmp/kolla_mariadb_grastate.dat state=absent
changed_when: false
always_run: true
- name: Cleaning up temp file on localhost
local_action: file path=/tmp/kolla_mariadb_recover_inventory_name state=absent
changed_when: false
always_run: true
run_once: true
- name: Starting first MariaDB container
kolla_docker:
action: "start_container"

View File

@ -12,7 +12,9 @@
- "kolla_logs:/var/log/kolla/"
when: delegate_host != 'None' or
( groups['mariadb'] | length ) == 1 or
( delegate_host == 'None' and inventory_hostname != groups['mariadb'][0] )
( delegate_host == 'None' and mariadb_recover_inventory_name is not defined and inventory_hostname != groups['mariadb'][0] ) or
( delegate_host == 'None' and mariadb_recover_inventory_name is defined and inventory_hostname != mariadb_recover_inventory_name )
# TODO(jeffrey4l), remove the task check when the wair_for bug is fixed
# https://github.com/ansible/ansible-modules-core/issues/2788

View File

@ -152,7 +152,7 @@ case "$1" in
;;
(mariadb_recovery)
ACTION="Attempting to restart mariadb cluster"
EXTRA_OPTS="$EXTRA_OPTS -e action=deploy"
EXTRA_OPTS="$EXTRA_OPTS -e action=deploy -e common_run=true"
PLAYBOOK="${BASEDIR}/ansible/mariadb_recovery.yml"
;;
(destroy)