From c5257fed1ac07a588cf80da6456827bc9a46b46e Mon Sep 17 00:00:00 2001 From: Josh Richards Date: Thu, 6 Feb 2025 11:14:54 -0500 Subject: [PATCH] fix(apps): Remove jobs when an app gets disabled Signed-off-by: Josh Richards --- lib/private/App/AppManager.php | 1 + lib/private/legacy/OC_App.php | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/lib/private/App/AppManager.php b/lib/private/App/AppManager.php index b6f7f9b13b798..0dd0d1f6b33e6 100644 --- a/lib/private/App/AppManager.php +++ b/lib/private/App/AppManager.php @@ -672,6 +672,7 @@ public function disableApp($appId, $automaticDisabled = false): void { $appData = $this->getAppInfo($appId); if (!is_null($appData)) { \OC_App::executeRepairSteps($appId, $appData['repair-steps']['uninstall']); + \OC_App::removeBackgroundJobs($appData['background-jobs']); } $this->dispatcher->dispatchTyped(new AppDisableEvent($appId)); diff --git a/lib/private/legacy/OC_App.php b/lib/private/legacy/OC_App.php index 544938b6ff9dd..78fd1e608447c 100644 --- a/lib/private/legacy/OC_App.php +++ b/lib/private/legacy/OC_App.php @@ -755,6 +755,13 @@ public static function executeRepairSteps(string $appId, array $steps) { $r->run(); } + public static function removeBackgroundJobs(array $jobs) { + $queue = \OC::$server->getJobList(); + foreach ($jobs as $job) { + $queue->remove($job); + } + } + public static function setupBackgroundJobs(array $jobs) { $queue = \OC::$server->getJobList(); foreach ($jobs as $job) {