summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
Diffstat (limited to 'common')
-rw-r--r--common/changes/bug_4435_add-lock-timeout-error1
-rw-r--r--common/src/leap/soledad/common/errors.py14
2 files changed, 14 insertions, 1 deletions
diff --git a/common/changes/bug_4435_add-lock-timeout-error b/common/changes/bug_4435_add-lock-timeout-error
new file mode 100644
index 00000000..8f220b1d
--- /dev/null
+++ b/common/changes/bug_4435_add-lock-timeout-error
@@ -0,0 +1 @@
+ o Add lock timeout HTTP error (#4435).
diff --git a/common/src/leap/soledad/common/errors.py b/common/src/leap/soledad/common/errors.py
index 7c2d7296..62de19f8 100644
--- a/common/src/leap/soledad/common/errors.py
+++ b/common/src/leap/soledad/common/errors.py
@@ -57,14 +57,26 @@ class AlreadyLockedError(errors.U1DBError):
wire_description = "lock is locked"
status = 403
+
+class LockTimedOutError(errors.U1DBError):
+ """
+ Exception raised when timing out while trying to lock the shared database.
+ """
+
+ wire_description = "lock timed out"
+ status = 408
+
+
# update u1db "wire description to status" and "wire description to exception"
# maps.
-for e in [InvalidTokenError, NotLockedError, AlreadyLockedError]:
+for e in [InvalidTokenError, NotLockedError, AlreadyLockedError,
+ LockTimedOutError]:
http_errors.wire_description_to_status.update({
e.wire_description: e.status})
errors.wire_description_to_exc.update({
e.wire_description: e})
+
# u1db error statuses also have to be updated
http_errors.ERROR_STATUSES = set(
http_errors.wire_description_to_status.values())