aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2020-03-02 17:47:48 +0100
committerRobin Appelman <robin@icewind.nl>2020-03-02 19:29:44 +0100
commitfab22ac14cb8116006b11cb2bcfe0337daaa2138 (patch)
treecbee43b264dbd6c783b6be75b4a401c5922c2350
parent64a29d01a492db19289833ba9f485b7dca881cef (diff)
downloadnextcloud-server-fab22ac14cb8116006b11cb2bcfe0337daaa2138.tar.gz
nextcloud-server-fab22ac14cb8116006b11cb2bcfe0337daaa2138.zip
pass the existing locks info when making locked exception with absolute paths
Signed-off-by: Robin Appelman <robin@icewind.nl>
-rw-r--r--apps/dav/lib/Connector/Sabre/File.php2
-rw-r--r--lib/private/Files/View.php11
-rw-r--r--lib/public/Lock/LockedException.php12
3 files changed, 20 insertions, 5 deletions
diff --git a/apps/dav/lib/Connector/Sabre/File.php b/apps/dav/lib/Connector/Sabre/File.php
index a1f5e2fe876..098961ce130 100644
--- a/apps/dav/lib/Connector/Sabre/File.php
+++ b/apps/dav/lib/Connector/Sabre/File.php
@@ -263,7 +263,7 @@ class File extends Node implements IFile {
try {
$this->acquireLock(ILockingProvider::LOCK_EXCLUSIVE);
- } catch (LockedException $e) {
+ } catch (LockedException $ex) {
if ($needsPartFile) {
$partStorage->unlink($internalPartPath);
}
diff --git a/lib/private/Files/View.php b/lib/private/Files/View.php
index 2c01c112ad4..90ac1e1988d 100644
--- a/lib/private/Files/View.php
+++ b/lib/private/Files/View.php
@@ -1946,7 +1946,8 @@ class View {
// rethrow with the a human-readable path
throw new LockedException(
$this->getPathRelativeToFiles($absolutePath),
- $e
+ $e,
+ $e->getExistingLock()
);
}
}
@@ -1988,12 +1989,14 @@ class View {
// rethrow with the a human-readable path
throw new LockedException(
$this->getPathRelativeToFiles($absolutePath),
- $e
+ $e,
+ $e->getExistingLock()
);
- } catch (\InvalidArgumentException $e) {
+ } catch (\InvalidArgumentException $ex) {
throw new LockedException(
$absolutePath,
- $e
+ $ex,
+ $e->getExistingLock()
);
}
}
diff --git a/lib/public/Lock/LockedException.php b/lib/public/Lock/LockedException.php
index 99205b54d24..582157010cc 100644
--- a/lib/public/Lock/LockedException.php
+++ b/lib/public/Lock/LockedException.php
@@ -44,6 +44,9 @@ class LockedException extends \Exception {
*/
private $path;
+ /** @var string|null */
+ private $existingLock;
+
/**
* LockedException constructor.
*
@@ -54,6 +57,7 @@ class LockedException extends \Exception {
*/
public function __construct(string $path, \Exception $previous = null, string $existingLock = null) {
$message = '"' . $path . '" is locked';
+ $this->existingLock = $existingLock;
if ($existingLock) {
$message .= ', existing lock on file: ' . $existingLock;
}
@@ -68,4 +72,12 @@ class LockedException extends \Exception {
public function getPath(): string {
return $this->path;
}
+
+ /**
+ * @return string
+ * @since 19.0.0
+ */
+ public function getExistingLock(): ?string {
+ return $this->existingLock;
+ }
}