DEV Community

Cover image for Incident note: Nextcloud "file is locked" (423 Locked): fix
Daniele Michelin
Daniele Michelin

Posted on Originally published at daniele-michelin.com

Incident note: Nextcloud "file is locked" (423 Locked): fix

Read the signal

Start with the exact wording of the error and its timestamp in the log. Then narrow down the cause before changing anything.

OCP\Lock\LockedException: "files/9a3c1e7d/Dokumente/Bericht.docx" is locked, existing lock on file: exclusive
Enter fullscreen mode Exit fullscreen mode

Narrow down possible causes

  • File locking uses the database instead of Redis, and locks stay behind after aborts.
  • An aborted upload or desktop client sync; the PHP process was killed by a timeout.
  • The file is still open in Collabora or OnlyOffice.
  • Background jobs do not run (no system cron), so expired locks are not cleaned up.

Check before changing anything

1.

Which locking backend is configured?

sudo -u www-data php /var/www/nextcloud/occ config:system:get memcache.locking
Enter fullscreen mode Exit fullscreen mode

2.

Check that Redis is reachable

redis-cli ping
Enter fullscreen mode Exit fullscreen mode

3.

Count locks in the database (with DB locking)

mysql -u nextcloud -p nextcloud -e 'SELECT COUNT(*) FROM oc_file_locks WHERE `lock` <> 0;'
Enter fullscreen mode Exit fullscreen mode

4.

Check the background job mode

sudo -u www-data php /var/www/nextcloud/occ config:app:get core backgroundjobs_mode
Enter fullscreen mode Exit fullscreen mode

Fix and test again

  1. Use Redis for locking: 'memcache.locking' => '\OC\Memcache\Redis' in config.php.
  2. Switch background jobs to system cron: */5 * * * * php -f /var/www/nextcloud/cron.php in www-data's crontab.
  3. Clear stale DB locks: maintenance mode on, DELETE FROM oc_file_locks WHERE 1;, maintenance mode off.
  4. With Redis, locks expire via TTL; only flush the Redis database in an emergency, and only if Nextcloud is its sole user.

Then repeat the original action and compare the result with the initial error.

Keep a note for the next ticket

Record the exact error, the check result, the change and the retest. That gives the team a useful starting point next time.

Can I just disable file locking?

Technically yes (filelocking.enabled set to false), but you risk corrupted files on concurrent access. Use Redis instead.

Full error guide: Nextcloud: "file is locked" and HTTP 423 Locked


Originally published at daniele-michelin.com. More guides, free checks (SPF, TLS, headers) and an error-message lexicon: daniele-michelin.com/en/.

Top comments (0)