MDL-66225 Backup: fix irrecoverable state
authorMatt Porritt <mattp@catalyst-net.au>
Tue, 30 Jul 2019 02:35:48 +0000 (02:35 +0000)
committerMatt Porritt <mattp@catalyst-au.net>
Wed, 23 Oct 2019 04:20:00 +0000 (04:20 +0000)
Fix condition where if an asynchronous backup
completes via the UI and the user refreshes the
page a new backup was created with a mismatched
backup id.
This caused a permanently failing ad-hoc task
and blocked further backups for that course.

backup/backup.php

index 5090f39..cfcb3ff 100644 (file)
@@ -123,6 +123,9 @@ if (!async_helper::is_async_pending($id, 'course', 'backup')) {
     if (!($bc = backup_ui::load_controller($backupid))) {
         $bc = new backup_controller($type, $id, backup::FORMAT_MOODLE,
                 backup::INTERACTIVE_YES, $backupmode, $USER->id);
+        // The backup id did not relate to a valid controller so we made a new controller.
+        // Now we need to reset the backup id to match the new controller.
+        $backupid = $bc->get_backupid();
     }
 
     // Prepare a progress bar which can display optionally during long-running