Leggi il segnale
Parti dal testo esatto dell’errore e dall’ora nel log. Poi restringi la causa prima di cambiare qualcosa.
OCP\Lock\LockedException: "files/9a3c1e7d/Dokumente/Bericht.docx" is locked, existing lock on file: exclusive
Restringi le possibili cause
- Il file locking usa il database invece di Redis e i lock restano dopo le interruzioni.
- Upload o sincronizzazione del client desktop interrotti; il processo PHP è stato chiuso per timeout.
- Il file è ancora aperto in Collabora o OnlyOffice.
- I job in background non girano (niente cron di sistema), quindi i lock scaduti non vengono puliti.
Controlla prima di cambiare
Quale backend di locking è configurato?
sudo -u www-data php /var/www/nextcloud/occ config:system:get memcache.lockingVerifica che Redis risponda
redis-cli pingConta i lock nel database (con locking su DB)
mysql -u nextcloud -p nextcloud -e 'SELECT COUNT(*) FROM oc_file_locks WHERE `lock` <> 0;'Controlla la modalità dei job in background
sudo -u www-data php /var/www/nextcloud/occ config:app:get core backgroundjobs_mode
Correggi e riprova
- Usa Redis per il locking:
'memcache.locking' => '\OC\Memcache\Redis'inconfig.php. - Passa i job in background al cron di sistema:
*/5 * * * * php -f /var/www/nextcloud/cron.phpnel crontab di www-data. - Togli i lock orfani dal DB: maintenance mode on,
DELETE FROM oc_file_locks WHERE 1;, maintenance mode off. - Con Redis i lock scadono tramite TTL; svuota il database Redis solo in emergenza e solo se lo usa esclusivamente Nextcloud.
Poi ripeti l’azione iniziale e confronta il risultato con l’errore di partenza.
Annota per il prossimo ticket
Annota l’errore esatto, il risultato del controllo, la modifica e la nuova prova. Il team avrà un punto di partenza utile nel prossimo caso.
Posso semplicemente disattivare il file locking?
Tecnicamente sì (filelocking.enabled a false), ma rischi file corrotti con accessi concorrenti. Meglio usare Redis.
Guida completa all’errore: Nextcloud: "file is locked" e HTTP 423 Locked