Back to Changelog

v1.0.257

Minor Release Released June 7, 2026

Migration system enterprise reliability overhaul: 14 fixes preventing batch migration failures like the Hayri 2026-06-06 incident

Bug Fixes

12
  • SSH retry pattern expanded with 6 new retryable error patterns (closed connection, session creation failure, handshake errors, i/o timeout, client disconnect, connection lost) and fixed lowercase EOF matching
  • Added FileExistsChecked and DirExistsChecked SSH helpers that correctly distinguish SSH errors from genuine file absence — preventing false path-not-found failures during panel source detection
  • SSH consecutive failure and reconnect attempt counters now reset after each successful command, preventing counter lock-up on long-running migrations
  • Fixed SSH keepAlive data race: pingOnce now uses proper mutex locking, eliminating concurrent write panics on unstable connections
  • Migration pipeline source-path detection for all 6 supported panels (Plesk, cPanel, CyberPanel, DirectAdmin, HestiaCP, CloudPanel) now uses SSH-resilient flow with EnsureConnected + DirExistsChecked + reconnect-retry
  • Added EnsureConnected gate before every pipeline step execution, preventing ghost-connection failures mid-migration
  • MigrationRunner now tracks session state with MarkMigrating/MarkSessionState(Completed|Failed) — sessions are always properly closed even on unexpected errors
  • Added TouchActivity + SSH health gate before processing each site in batch migrations, catching stale connections early rather than failing mid-site
  • Fixed system_users query using wrong column name (user_id instead of panel_user_id) — post-migration PHP-FPM reload now correctly identifies users to restart
  • Fixed ClamAV malware scanner using wrong column names (user_id instead of panel_user_id, username instead of system_username) in system_users query — on-demand scans now work for all migrated users
  • All 13 panel detectors now call EnsureConnected at the start of Detect() — eliminates ghost-connection false negatives during source panel type detection
  • Session cleanup goroutine now skips sessions with Migrating, Recovering, or DiscoveryInProgress states, preventing premature SSH connection teardown that caused the Hayri 109-site rollback incident
See the Demo