aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files/lib/BackgroundJob/CleanupFileLocks.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files/lib/BackgroundJob/CleanupFileLocks.php')
-rw-r--r--apps/files/lib/BackgroundJob/CleanupFileLocks.php40
1 files changed, 40 insertions, 0 deletions
diff --git a/apps/files/lib/BackgroundJob/CleanupFileLocks.php b/apps/files/lib/BackgroundJob/CleanupFileLocks.php
new file mode 100644
index 00000000000..91bb145884b
--- /dev/null
+++ b/apps/files/lib/BackgroundJob/CleanupFileLocks.php
@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * SPDX-FileCopyrightText: 2019-2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-FileCopyrightText: 2016 ownCloud, Inc.
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+namespace OCA\Files\BackgroundJob;
+
+use OC\Lock\DBLockingProvider;
+use OCP\AppFramework\Utility\ITimeFactory;
+use OCP\BackgroundJob\TimedJob;
+use OCP\Lock\ILockingProvider;
+use OCP\Server;
+
+/**
+ * Clean up all file locks that are expired for the DB file locking provider
+ */
+class CleanupFileLocks extends TimedJob {
+ /**
+ * sets the correct interval for this timed job
+ */
+ public function __construct(ITimeFactory $time) {
+ parent::__construct($time);
+ $this->setInterval(5 * 60);
+ }
+
+ /**
+ * Makes the background job do its work
+ *
+ * @param array $argument unused argument
+ * @throws \Exception
+ */
+ public function run($argument) {
+ $lockingProvider = Server::get(ILockingProvider::class);
+ if ($lockingProvider instanceof DBLockingProvider) {
+ $lockingProvider->cleanExpiredLocks();
+ }
+ }
+}