---
- name: Restart MariaDB container
  vars:
    service_name: "mariadb"
    service: "{{ mariadb_services[service_name] }}"
  become: true
  kolla_container:
    action: "recreate_or_restart_container"
    common_options: "{{ docker_common_options }}"
    name: "{{ service.container_name }}"
    image: "{{ service.image }}"
    volumes: "{{ service.volumes }}"
    dimensions: "{{ service.dimensions }}"
    environment: "{{ service.environment | default(omit) }}"
    healthcheck: "{{ service.healthcheck | default(omit) }}"

# NOTE(yoctozepto): We have to loop this to avoid breaking on connection resets
- name: Wait for MariaDB service port liveness
  wait_for:
    host: "{{ api_interface_address }}"
    port: "{{ mariadb_port }}"
    connect_timeout: 1
    timeout: 60
    search_regex: "MariaDB"
  register: check_mariadb_port
  check_mode: false
  until: check_mariadb_port is success
  retries: 10
  delay: 6

- name: Wait for MariaDB service to sync WSREP
  become: true
  kolla_toolbox:
    container_engine: "{{ kolla_container_engine }}"
    module_name: mysql_query
    module_args:
      login_db: "mysql"
      login_host: "{{ api_interface_address }}"
      login_port: "{{ mariadb_port }}"
      login_user: "{{ database_user }}"
      login_password: "{{ database_password }}"
      query: 'SHOW STATUS LIKE "wsrep_local_state_comment"'
  register: result
  until: result.query_result[0][0]['Value'] == "Synced"
  retries: 10
  delay: 6
  check_mode: false
  when:
    # NOTE(yoctozepto): we don't want to wait for new nodes to fully sync
    # with an existing cluster as this could take time
    - not mariadb_cluster_exists or
      (groups[mariadb_shard_group + '_port_alive_True'] is defined and
      inventory_hostname in groups[mariadb_shard_group + '_port_alive_True'])
