Skip to content

A-3: Add health-gate between deployment stages #61

Description

@szachovy

Problem

start_cluster() calls stages sequentially but has no health verification between them. If MySQL servers are started but not fully healthy (due to BF-1 / #34), start_mysql_mgmt() proceeds and fails when MySQL Router can't connect. The root cause is obscured by downstream failures.

File: src/initialize.py, start_cluster()

Fix

def start_cluster(self) -> None:
    self.start_mysql_servers()
    self._verify_mysql_cluster_ready()  # New: confirm all 3 nodes healthy
    self.start_mysql_mgmt(MASTER)
    self._verify_mgmt_ready(MASTER)     # New: confirm Router + keepalived
    self.start_mysql_mgmt(BACKUP)
    self._verify_mgmt_ready(BACKUP)
    self.start_superset()

Acceptance Criteria

  • Explicit health verification added between each deployment stage in start_cluster()
  • _verify_mysql_cluster_ready() confirms all 3 MySQL nodes healthy before start_mysql_mgmt()
  • _verify_mgmt_ready() confirms Router and keepalived healthy before next stage
  • Failure at a stage produces a clear error pointing to that stage, not a downstream symptom

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions