Problem
Superset is started sequentially on node-0 then node-1. Each node pulls the large superset-service image (~2 GB), initializes Docker Swarm, starts Redis, and waits for the Superset healthcheck (60s start + up to 14×60s retries = up to 15 min per node). Sequential startup means ~30 min for both nodes.
File: src/initialize.py, start_superset(), lines 249–281
Impact / Caveat
node-0 and node-1 run independent Docker Swarm instances (Docker-in-Docker), so they CAN run in parallel. However, verify there is no dependency on shared MySQL state before parallelizing.
Fix
Same ThreadPoolExecutor pattern as DS-1.
Acceptance Criteria
Problem
Superset is started sequentially on node-0 then node-1. Each node pulls the large superset-service image (~2 GB), initializes Docker Swarm, starts Redis, and waits for the Superset healthcheck (60s start + up to 14×60s retries = up to 15 min per node). Sequential startup means ~30 min for both nodes.
File:
src/initialize.py,start_superset(), lines 249–281Impact / Caveat
node-0 and node-1 run independent Docker Swarm instances (Docker-in-Docker), so they CAN run in parallel. However, verify there is no dependency on shared MySQL state before parallelizing.
Fix
Same
ThreadPoolExecutorpattern as DS-1.Acceptance Criteria
start_superset()usesThreadPoolExecutorto start node-0 and node-1 in parallel