NextCloud: File Lock

Hello,

We transfer now a lot of files into the Nextcloud instance, using external storage (SMB share from NethServer).

Permanently we got an Error: OCP\Lock\LockedException: "filexyz" is locked

We unlock each time with this procedure: https://wiki.nethserver.org/doku.php?id=howto:nextcloud#file_is_locked

But we have to it more than 10 times a day. And we have migrated only a small fraction of the existing files so far. This constant unblocking including server reboot is extremely time-consuming and massively restricts NC use (and acceptance).

This error also occurs when files or folders are moved or renamed.

Is this a well known, normal NC behavior? Can we fundamentally eliminate this misconduct?
Sincerely, Marko

Don’t know (maybe using it with Redis, but it is for higher workloads IIRC).
Another thing to consider is why it happens (why the locks are not released and related file/directory activity), but I cannot help much with that.
Here is a link to the manual:
https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/files_locking_transactional.html?highlight=locks#transactional-file-locking

2 Likes

I found the solution: I stopped / disabled the Elasticsearch service. File locks have disappeared for days.

Sincerely, Marko

1 Like

At the moment we have again out of the blue a lot of such file locks. The Elasticsearch service is still disabled and stopped.

Fatal webdav Sabre\DAV\Exception:

Fatal webdav Sabre\DAV\Exception: An exception occurred while executing ‘UPDATE oc_file_locks SET lock = lock + 1, ttl = ? WHERE key = ? AND lock >= 0’ with params [1623338337, “files/dfe865c7acc6bb22f3f3a94725b3229b”]: SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction

/usr/share/nextcloud/apps/dav/lib/Connector/Sabre/File.php - line 436:

OCA\DAV\Connector\Sabre\File->convertToSabreException(Doctrine\DBA … {})

/usr/share/nextcloud/3rdparty/sabre/dav/lib/DAV/CorePlugin.php - line 90:

OCA\DAV\Connector\Sabre\File->get()

/usr/share/nextcloud/3rdparty/sabre/event/lib/WildcardEmitterTrait.php - line 89:

Sabre\DAV\CorePlugin->httpGet(Sabre\HTTP\Request {}, Sabre\HTTP\Response {})

/usr/share/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 474:

Sabre\DAV\Server->emit(“method:GET”, [ Sabre\HTTP … }])

/usr/share/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 251:

Sabre\DAV\Server->invokeMethod(Sabre\HTTP\Request {}, Sabre\HTTP\Response {})

/usr/share/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 319:

Sabre\DAV\Server->start()

/usr/share/nextcloud/apps/dav/lib/Server.php - line 332:

Sabre\DAV\Server->exec()

/usr/share/nextcloud/apps/dav/appinfo/v2/remote.php - line 35:

OCA\DAV\Server->exec()

/usr/share/nextcloud/remote.php - line 167:

require_once("/usr/share/ … p")

Caused by Doctrine\DBAL\Exception\DeadlockException: An exception occurred while executing ‘UPDATE oc_file_locks SET lock = lock + 1, ttl = ? WHERE key = ? AND lock >= 0’ with params [1623338337, “files/dfe865c7acc6bb22f3f3a94725b3229b”]: SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction

/usr/share/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php - line 169:

Doctrine\DBAL\Driver\AbstractMySQLDriver->convertException(“An exceptio … n”, Doctrine\DBA … ]})

/usr/share/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php - line 149:

Doctrine\DBAL\DBALException::wrapException(Doctrine\DBA … {}, Doctrine\DBA … ]}, “An exceptio … n”)

/usr/share/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php - line 1071:

Doctrine\DBAL\DBALException::driverExceptionDuringQuery(Doctrine\DBA … {}, Doctrine\DBA … ]}, “UPDATE `oc_ … 0”, { 1: 1623338 … "})

/usr/share/nextcloud/lib/private/DB/Connection.php - line 222:

Doctrine\DBAL\Connection->executeUpdate(“UPDATE `oc_ … 0”, [ 1623338337 … "], [ null,null])

/usr/share/nextcloud/lib/private/Lock/DBLockingProvider.php - line 191:

OC\DB\Connection->executeUpdate(“UPDATE `oc_ … 0”, [ 1623338337 … "])

/usr/share/nextcloud/lib/private/Files/Storage/Common.php - line 751:

OC\Lock\DBLockingProvider->acquireLock(“files/dfe86 … b”, 1, “smb::admin@ … e”)

/usr/share/nextcloud/lib/private/Files/Storage/Wrapper/Wrapper.php - line 590:

OC\Files\Storage\Common->acquireLock(“1Objekte”, 1, OC\Lock\DBLockingProvider {})

/usr/share/nextcloud/lib/private/Files/Storage/Wrapper/Wrapper.php - line 590:

OC\Files\Storage\Wrapper\Wrapper->acquireLock(“1Objekte”, 1, OC\Lock\DBLockingProvider {})

/usr/share/nextcloud/lib/private/Files/Storage/Wrapper/Wrapper.php - line 590:

OC\Files\Storage\Wrapper\Wrapper->acquireLock(“1Objekte”, 1, OC\Lock\DBLockingProvider {})

/usr/share/nextcloud/lib/private/Files/View.php - line 1959:

OC\Files\Storage\Wrapper\Wrapper->acquireLock(“1Objekte”, 1, OC\Lock\DBLockingProvider {})

/usr/share/nextcloud/lib/private/Files/View.php - line 2078:

OC\Files\View->lockPath("/MyData/1Objekte", 1)

/usr/share/nextcloud/lib/private/Files/View.php - line 1147:

OC\Files\View->lockFile("/MyData/ … f", 1)

/usr/share/nextcloud/lib/private/Files/View.php - line 1001:

OC\Files\View->basicOperation(“fopen”, “/MyData/ … f”, [ “read”], “r”)

/usr/share/nextcloud/apps/dav/lib/Connector/Sabre/File.php - line 434:

OC\Files\View->fopen(“MyData/1 … f”, “r”)

/usr/share/nextcloud/3rdparty/sabre/dav/lib/DAV/CorePlugin.php - line 90:

OCA\DAV\Connector\Sabre\File->get()

/usr/share/nextcloud/3rdparty/sabre/event/lib/WildcardEmitterTrait.php - line 89:

Sabre\DAV\CorePlugin->httpGet(Sabre\HTTP\Request {}, Sabre\HTTP\Response {})

/usr/share/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 474:

Sabre\DAV\Server->emit(“method:GET”, [ Sabre\HTTP … }])

/usr/share/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 251:

Sabre\DAV\Server->invokeMethod(Sabre\HTTP\Request {}, Sabre\HTTP\Response {})

/usr/share/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 319:

Sabre\DAV\Server->start()

/usr/share/nextcloud/apps/dav/lib/Server.php - line 332:

Sabre\DAV\Server->exec()

/usr/share/nextcloud/apps/dav/appinfo/v2/remote.php - line 35:

OCA\DAV\Server->exec()

/usr/share/nextcloud/remote.php - line 167:

require_once("/usr/share/ … p")

Caused by Doctrine\DBAL\Driver\PDOException: SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction

/usr/share/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php - line 1062:

Doctrine\DBAL\Driver\PDOStatement->execute()

/usr/share/nextcloud/lib/private/DB/Connection.php - line 222:

Doctrine\DBAL\Connection->executeUpdate(“UPDATE `oc_ … 0”, [ 1623338337 … "], [ null,null])

/usr/share/nextcloud/lib/private/Lock/DBLockingProvider.php - line 191:

OC\DB\Connection->executeUpdate(“UPDATE `oc_ … 0”, [ 1623338337 … "])

/usr/share/nextcloud/lib/private/Files/Storage/Common.php - line 751:

OC\Lock\DBLockingProvider->acquireLock(“files/dfe86 … b”, 1, “smb::admin@ … e”)

/usr/share/nextcloud/lib/private/Files/Storage/Wrapper/Wrapper.php - line 590:

OC\Files\Storage\Common->acquireLock(“1Objekte”, 1, OC\Lock\DBLockingProvider {})

/usr/share/nextcloud/lib/private/Files/Storage/Wrapper/Wrapper.php - line 590:

OC\Files\Storage\Wrapper\Wrapper->acquireLock(“1Objekte”, 1, OC\Lock\DBLockingProvider {})

/usr/share/nextcloud/lib/private/Files/Storage/Wrapper/Wrapper.php - line 590:

OC\Files\Storage\Wrapper\Wrapper->acquireLock(“1Objekte”, 1, OC\Lock\DBLockingProvider {})

/usr/share/nextcloud/lib/private/Files/View.php - line 1959:

OC\Files\Storage\Wrapper\Wrapper->acquireLock(“1Objekte”, 1, OC\Lock\DBLockingProvider {})

/usr/share/nextcloud/lib/private/Files/View.php - line 2078:

OC\Files\View->lockPath("/MyData/1Objekte", 1)

/usr/share/nextcloud/lib/private/Files/View.php - line 1147:

OC\Files\View->lockFile("/MyData/ … f", 1)

/usr/share/nextcloud/lib/private/Files/View.php - line 1001:

OC\Files\View->basicOperation(“fopen”, “/MyData/ … f”, [ “read”], “r”)

/usr/share/nextcloud/apps/dav/lib/Connector/Sabre/File.php - line 434:

OC\Files\View->fopen(“MyData/1 … f”, “r”)

/usr/share/nextcloud/3rdparty/sabre/dav/lib/DAV/CorePlugin.php - line 90:

OCA\DAV\Connector\Sabre\File->get()

/usr/share/nextcloud/3rdparty/sabre/event/lib/WildcardEmitterTrait.php - line 89:

Sabre\DAV\CorePlugin->httpGet(Sabre\HTTP\Request {}, Sabre\HTTP\Response {})

/usr/share/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 474:

Sabre\DAV\Server->emit(“method:GET”, [ Sabre\HTTP … }])

/usr/share/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 251:

Sabre\DAV\Server->invokeMethod(Sabre\HTTP\Request {}, Sabre\HTTP\Response {})

/usr/share/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 319:

Sabre\DAV\Server->start()

/usr/share/nextcloud/apps/dav/lib/Server.php - line 332:

Sabre\DAV\Server->exec()

/usr/share/nextcloud/apps/dav/appinfo/v2/remote.php - line 35:

OCA\DAV\Server->exec()

/usr/share/nextcloud/remote.php - line 167:

require_once("/usr/share/ … p")

Caused by PDOException: SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction

/usr/share/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php - line 127:

PDOStatement->execute(null)

/usr/share/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php - line 1062:

Doctrine\DBAL\Driver\PDOStatement->execute()

/usr/share/nextcloud/lib/private/DB/Connection.php - line 222:

Doctrine\DBAL\Connection->executeUpdate(“UPDATE `oc_ … 0”, [ 1623338337 … "], [ null,null])

/usr/share/nextcloud/lib/private/Lock/DBLockingProvider.php - line 191:

OC\DB\Connection->executeUpdate(“UPDATE `oc_ … 0”, [ 1623338337 … "])

/usr/share/nextcloud/lib/private/Files/Storage/Common.php - line 751:

OC\Lock\DBLockingProvider->acquireLock(“files/dfe86 … b”, 1, “smb::admin@ … e”)

/usr/share/nextcloud/lib/private/Files/Storage/Wrapper/Wrapper.php - line 590:

OC\Files\Storage\Common->acquireLock(“1Objekte”, 1, OC\Lock\DBLockingProvider {})

/usr/share/nextcloud/lib/private/Files/Storage/Wrapper/Wrapper.php - line 590:

OC\Files\Storage\Wrapper\Wrapper->acquireLock(“1Objekte”, 1, OC\Lock\DBLockingProvider {})

/usr/share/nextcloud/lib/private/Files/Storage/Wrapper/Wrapper.php - line 590:

OC\Files\Storage\Wrapper\Wrapper->acquireLock(“1Objekte”, 1, OC\Lock\DBLockingProvider {})

/usr/share/nextcloud/lib/private/Files/View.php - line 1959:

OC\Files\Storage\Wrapper\Wrapper->acquireLock(“1Objekte”, 1, OC\Lock\DBLockingProvider {})

/usr/share/nextcloud/lib/private/Files/View.php - line 2078:

OC\Files\View->lockPath("/MyData/1Objekte", 1)

/usr/share/nextcloud/lib/private/Files/View.php - line 1147:

OC\Files\View->lockFile("/MyData/ … f", 1)

/usr/share/nextcloud/lib/private/Files/View.php - line 1001:

OC\Files\View->basicOperation(“fopen”, “/MyData/ … f”, [ “read”], “r”)

/usr/share/nextcloud/apps/dav/lib/Connector/Sabre/File.php - line 434:

OC\Files\View->fopen(“MyData/1 … f”, “r”)

/usr/share/nextcloud/3rdparty/sabre/dav/lib/DAV/CorePlugin.php - line 90:

OCA\DAV\Connector\Sabre\File->get()

/usr/share/nextcloud/3rdparty/sabre/event/lib/WildcardEmitterTrait.php - line 89:

Sabre\DAV\CorePlugin->httpGet(Sabre\HTTP\Request {}, Sabre\HTTP\Response {})

/usr/share/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 474:

Sabre\DAV\Server->emit(“method:GET”, [ Sabre\HTTP … }])

/usr/share/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 251:

Sabre\DAV\Server->invokeMethod(Sabre\HTTP\Request {}, Sabre\HTTP\Response {})

/usr/share/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 319:

Sabre\DAV\Server->start()

/usr/share/nextcloud/apps/dav/lib/Server.php - line 332:

Sabre\DAV\Server->exec()

/usr/share/nextcloud/apps/dav/appinfo/v2/remote.php - line 35:

OCA\DAV\Server->exec()

/usr/share/nextcloud/remote.php - line 167:

require_once("/usr/share/ … p")

Before that came such PHP-Errors: imagecreatefromstring(): Empty string or invalid image at /usr/share/nextcloud/lib/private/legacy/OC_Image.php#624:
  1. %%closure%%OC\Log\ErrorHandler::onError(2, “imagecreate … e”, “/usr/share/ … p”, 624, { imagePath: … e})

  2. /usr/share/nextcloud/lib/private/legacy/OC_Image.php - line 624: imagecreatefromstring("*** sensiti … *")

  3. /usr/share/nextcloud/lib/private/Preview/Image.php - line 52: OC_Image->loadFromFile("/tmp/oc_tmp_Spr0K0")

  4. /usr/share/nextcloud/lib/private/Preview/GeneratorHelper.php - line 63: OC\Preview\Image->getThumbnail(OC\Files\Node\File {}, 4096, 4096)

  5. /usr/share/nextcloud/lib/private/Preview/Generator.php - line 244: OC\Preview\GeneratorHelper->getThumbnail(OC\Preview\JPEG {}, OC\Files\Node\File {}, 4096, 4096)

  6. /usr/share/nextcloud/lib/private/Preview/Generator.php - line 140: OC\Preview\Generator->getMaxPreview(OC\Files\Sim … {}, OC\Files\Node\File {}, “image/jpeg”, “*** sensiti … *”)

  7. /usr/share/nextcloud/lib/private/Preview/Generator.php - line 109: OC\Preview\Generator->generatePreviews(OC\Files\Node\File {}, [ { width: 1 … }], “image/jpeg”)

  8. /usr/share/nextcloud/lib/private/PreviewManager.php - line 190: OC\Preview\Generator->getPreview(OC\Files\Node\File {}, 1024, 1024, false, “cover”, null)

  9. /usr/share/nextcloud/core/Controller/PreviewController.php - line 170: OC\PreviewManager->getPreview(OC\Files\Node\File {}, 1024, 1024, false, “cover”)

  10. /usr/share/nextcloud/core/Controller/PreviewController.php - line 107: OC\Core\Controller\PreviewController->fetchPreview(OC\Files\Node\File {}, 1024, 1024, true, true, “cover”)

  11. /usr/share/nextcloud/lib/private/AppFramework/Http/Dispatcher.php - line 169: OC\Core\Controller\PreviewController->getPreview(“MyData/1 … g”, 1024, 1024, true, true, “cover”)

  12. /usr/share/nextcloud/lib/private/AppFramework/Http/Dispatcher.php - line 100: OC\AppFramework\Http\Dispatcher->executeController(OC\Core\Cont … {}, “getPreview”)

  13. /usr/share/nextcloud/lib/private/AppFramework/App.php - line 152: OC\AppFramework\Http\Dispatcher->dispatch(OC\Core\Cont … {}, “getPreview”)

  14. /usr/share/nextcloud/lib/private/Route/Router.php - line 309: OC\AppFramework\App::main(“OC\Core\C … r”, “getPreview”, OC\AppFramew … {}, { _route: "c … "})

  15. /usr/share/nextcloud/lib/base.php - line 1008: OC\Route\Router->match("/core/preview.png")

  16. /usr/share/nextcloud/index.php - line 37: OC::handleRequest()|

| — | — |

also before: Error: file_get_contents(/var/lib/nethserver/nextcloud/45496285-33A9-4326-AB29-4B84FCDC6A6E/files/tmp/oc_tmp_Spr0K0): failed to open stream: No such file or directory at /usr/share/nextcloud/lib/private/Files/Storage/Local.php#272
  1. %%closure%%OC\Log\ErrorHandler::onError(2, “file_get_co … y”, “/usr/share/ … p”, 272, { path: "fil … "})

  2. /usr/share/nextcloud/lib/private/Files/Storage/Local.php - line 272: file_get_contents("/var/lib/ne … 0")

  3. /usr/share/nextcloud/lib/private/Files/Storage/Wrapper/Wrapper.php - line 246: OC\Files\Storage\Local->file_get_contents(“files/tmp/oc_tmp_Spr0K0”)

  4. /usr/share/nextcloud/lib/private/Files/View.php - line 1167: OC\Files\Storage\Wrapper\Wrapper->file_get_contents(“files/tmp/oc_tmp_Spr0K0”)

  5. /usr/share/nextcloud/lib/private/Files/View.php - line 597: OC\Files\View->basicOperation(“file_get_contents”, “/tmp/oc_tmp_Spr0K0”, [ “read”])

  6. /usr/share/nextcloud/lib/private/Files/Filesystem.php - line 716: OC\Files\View->file_get_contents("/tmp/oc_tmp_Spr0K0")

  7. /usr/share/nextcloud/lib/private/legacy/OC_Image.php - line 624: OC\Files\Filesystem::file_get_contents("/tmp/oc_tmp_Spr0K0")

  8. /usr/share/nextcloud/lib/private/Preview/Image.php - line 52: OC_Image->loadFromFile("/tmp/oc_tmp_Spr0K0")

  9. /usr/share/nextcloud/lib/private/Preview/GeneratorHelper.php - line 63: OC\Preview\Image->getThumbnail(OC\Files\Node\File {}, 4096, 4096)

  10. /usr/share/nextcloud/lib/private/Preview/Generator.php - line 244: OC\Preview\GeneratorHelper->getThumbnail(OC\Preview\JPEG {}, OC\Files\Node\File {}, 4096, 4096)

  11. /usr/share/nextcloud/lib/private/Preview/Generator.php - line 140: OC\Preview\Generator->getMaxPreview(OC\Files\Sim … {}, OC\Files\Node\File {}, “image/jpeg”, “”)

  12. /usr/share/nextcloud/lib/private/Preview/Generator.php - line 109: OC\Preview\Generator->generatePreviews(OC\Files\Node\File {}, [ { width: 1 … }], “image/jpeg”)

  13. /usr/share/nextcloud/lib/private/PreviewManager.php - line 190: OC\Preview\Generator->getPreview(OC\Files\Node\File {}, 1024, 1024, false, “cover”, null)

  14. /usr/share/nextcloud/core/Controller/PreviewController.php - line 170: OC\PreviewManager->getPreview(OC\Files\Node\File {}, 1024, 1024, false, “cover”)

  15. /usr/share/nextcloud/core/Controller/PreviewController.php - line 107: OC\Core\Controller\PreviewController->fetchPreview(OC\Files\Node\File {}, 1024, 1024, true, true, “cover”)

  16. /usr/share/nextcloud/lib/private/AppFramework/Http/Dispatcher.php - line 169: OC\Core\Controller\PreviewController->getPreview(“MyData/1 … g”, 1024, 1024, true, true, “cover”)

  17. /usr/share/nextcloud/lib/private/AppFramework/Http/Dispatcher.php - line 100: OC\AppFramework\Http\Dispatcher->executeController(OC\Core\Cont … {}, “getPreview”)

  18. /usr/share/nextcloud/lib/private/AppFramework/App.php - line 152: OC\AppFramework\Http\Dispatcher->dispatch(OC\Core\Cont … {}, “getPreview”)

  19. /usr/share/nextcloud/lib/private/Route/Router.php - line 309: OC\AppFramework\App::main(“OC\Core\C … r”, “getPreview”, OC\AppFramew … {}, { _route: "c … "})

  20. /usr/share/nextcloud/lib/base.php - line 1008: OC\Route\Router->match("/core/preview.png")

  21. /usr/share/nextcloud/index.php - line 37: OC::handleRequest()|

Now we have to try again to find a cause. Does anyone have an idea?

Sincerely, Marko