fix(backup): Cancel Stalled fatal, stalled self-heal, runbackup overlay, update site #310

Merged
jmiller merged 6 commits from fix/backup-cancel-stall-runbackup-updatesite into dev 2026-07-18 21:29:22 +00:00
Owner

Fixes four backup bugs found during a functional backup test on the dev sandbox.

Addresses #306 #307 #308 #309 (left open until tested per workflow — no auto-close keyword).

Changes

  • Cancel Stalled / purge fatal: Factory::getContainer() instead of the protected CMSApplication::getContainer().
  • Stalled self-heal: BackupStatusHelper::markStalledAsFailed() swept on the records list.
  • Null end time: detail view shows "Not finished" instead of "...-0001".
  • Run-backup overlay: full-screen black overlay instead of an in-chrome card.
  • Update site: script.php ensureUpdateSite() self-heals a missing update site in postflight.

CHANGELOG [Unreleased] updated. Needs CI build + dev-install verification before merge.

Fixes four backup bugs found during a functional backup test on the dev sandbox. Addresses #306 #307 #308 #309 (left open until tested per workflow — no auto-close keyword). ### Changes - **Cancel Stalled / purge fatal**: `Factory::getContainer()` instead of the protected `CMSApplication::getContainer()`. - **Stalled self-heal**: `BackupStatusHelper::markStalledAsFailed()` swept on the records list. - **Null end time**: detail view shows "Not finished" instead of "...-0001". - **Run-backup overlay**: full-screen black overlay instead of an in-chrome card. - **Update site**: `script.php ensureUpdateSite()` self-heals a missing update site in postflight. CHANGELOG `[Unreleased]` updated. Needs CI build + dev-install verification before merge.
jmiller added 2 commits 2026-07-18 20:17:44 +00:00
fix(backup): repair Cancel Stalled fatal, stalled-run self-heal, runbackup overlay, update site
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 36s
cf191be338
- BackupsController::cancelStalled()/purge(): use Factory::getContainer()
  instead of the protected CMSApplication::getContainer() (fatal on Cancel Stalled)
- BackupStatusHelper::markStalledAsFailed(): flip orphaned "running" records
  older than a 1h threshold to "fail"; swept when the records list loads
- backup detail view: render "Not finished" for a null/zero backupend
  instead of the bogus "Monday, November 29, -0001"
- runbackup: full-screen black overlay (fixed, z-indexed) instead of an
  in-admin-chrome card, matching the lock overlay
- script.php ensureUpdateSite(): recreate a missing package update site in
  postflight so the "update site not found" banner self-heals

Authored-by: Moko Consulting
Claude-Session: https://claude.ai/code/session_019V1WPYojhKyyPHewfUsPEz
jmiller added 1 commit 2026-07-18 20:28:10 +00:00
fix(backup): address PR review — transactional update site, safer stalled sweep
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 41s
Generic: Project CI / Lint & Validate (pull_request) Has been cancelled
Universal: PR Check / Branch Policy (pull_request) Has been cancelled
Universal: PR Check / Secret Scan (pull_request) Has been cancelled
Universal: PR Check / Validate PR (pull_request) Has been cancelled
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Has been cancelled
Generic: Project CI / Tests (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
93b7437e0c
Silent-failure-hunter:
- ensureUpdateSite(): wrap the two inserts in a transaction so a failed link
  insert cannot orphan a #__update_sites row (the idempotency guard checks only
  the link table, so an orphan would be re-created on every retry). Surface
  failures via Log::add(jerror) + enqueueMessage instead of a silent error_log(),
  matching restoreDownloadKey().

Code-reviewer:
- markStalledAsFailed(): raise threshold to a generous 6h (well above
  PreflightCheck's 30-min per-profile start guard) so a long browser/CLI backup
  is not reaped mid-flight; delete partial archives for reaped rows to match
  PreflightCheck; add a WARNING breadcrumb in the catch. Real fix (heartbeat
  column) tracked as a follow-up in the stalled-backup issue.

Authored-by: Moko Consulting
Claude-Session: https://claude.ai/code/session_019V1WPYojhKyyPHewfUsPEz
jmiller added 1 commit 2026-07-18 20:30:03 +00:00
jmiller added 2 commits 2026-07-18 21:28:45 +00:00
# Conflicts:
#	.mokogit/workflows/issue-branch.yml
#	SECURITY.md
#	source/packages/com_mokosuitebackup/mokosuitebackup.xml
#	source/packages/mod_mokosuitebackup_cpanel/mod_mokosuitebackup_cpanel.xml
#	source/packages/plg_actionlog_mokosuitebackup/mokosuitebackup.xml
#	source/packages/plg_console_mokosuitebackup/mokosuitebackup.xml
#	source/packages/plg_content_mokosuitebackup/mokosuitebackup.xml
#	source/packages/plg_quickicon_mokosuitebackup/mokosuitebackup.xml
#	source/packages/plg_system_mokosuitebackup/mokosuitebackup.xml
#	source/packages/plg_task_mokosuitebackup/mokosuitebackup.xml
#	source/packages/plg_webservices_mokosuitebackup/mokosuitebackup.xml
#	source/pkg_mokosuitebackup.xml
Merge branch 'fix/backup-cancel-stall-runbackup-updatesite' of https://git.mokoconsulting.tech/MokoConsulting/MokoSuiteBackup into fix/backup-cancel-stall-runbackup-updatesite
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 41s
Generic: Project CI / Lint & Validate (pull_request) Has been cancelled
Universal: PR Check / Branch Policy (pull_request) Has been cancelled
Universal: PR Check / Secret Scan (pull_request) Has been cancelled
Universal: PR Check / Validate PR (pull_request) Has been cancelled
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Has been cancelled
Branch Cleanup / Delete merged branch (pull_request) Has been cancelled
RC Revert / Rename rc/ back to dev/ (pull_request) Has been cancelled
Generic: Project CI / Tests (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
a96cad9f97
# Conflicts:
#	.mokogit/workflows/issue-branch.yml
#	SECURITY.md
#	source/packages/com_mokosuitebackup/mokosuitebackup.xml
#	source/packages/mod_mokosuitebackup_cpanel/mod_mokosuitebackup_cpanel.xml
#	source/packages/plg_actionlog_mokosuitebackup/mokosuitebackup.xml
#	source/packages/plg_console_mokosuitebackup/mokosuitebackup.xml
#	source/packages/plg_content_mokosuitebackup/mokosuitebackup.xml
#	source/packages/plg_quickicon_mokosuitebackup/mokosuitebackup.xml
#	source/packages/plg_system_mokosuitebackup/mokosuitebackup.xml
#	source/packages/plg_task_mokosuitebackup/mokosuitebackup.xml
#	source/packages/plg_webservices_mokosuitebackup/mokosuitebackup.xml
#	source/pkg_mokosuitebackup.xml
jmiller merged commit 7e93078b9b into dev 2026-07-18 21:29:22 +00:00
Sign in to join this conversation.