summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Shyba <victor.shyba@gmail.com>2015-09-19 14:25:30 -0300
committerKali Kaneko <kali@leap.se>2015-10-13 16:15:00 -0400
commita1906cf4e808ddf64b6117334112ada830e5eb1a (patch)
treede302bba34c74334d76100a1d3251fc0bb233e58
parentba203923cd2479fafe662c8edae56763d8babb67 (diff)
[feat] handle DatabaseDoesNotExist during sync
This error raises while getting info on target (or server) replica. On previous implementation there was nothing to do here, but now that we have db creation in place this error should be handled just like u1db original implementation. The reason is that db creation occurs during sync exchange, but before this we try to ask for info and the code that checks for info raises an error that will be used to signal the client that a database will be created and that it must save the replica uid returned by server, after sync exchange (where we send/fetch documents).
-rw-r--r--client/src/leap/soledad/client/sync.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/client/src/leap/soledad/client/sync.py b/client/src/leap/soledad/client/sync.py
index 110baa0a..225d3e2d 100644
--- a/client/src/leap/soledad/client/sync.py
+++ b/client/src/leap/soledad/client/sync.py
@@ -69,9 +69,15 @@ class SoledadSynchronizer(Synchronizer):
# get target identifier, its current generation,
# and its last-seen database generation for this source
ensure_callback = None
- (self.target_replica_uid, target_gen, target_trans_id,
- target_my_gen, target_my_trans_id) = yield \
- sync_target.get_sync_info(self.source._replica_uid)
+ try:
+ (self.target_replica_uid, target_gen, target_trans_id,
+ target_my_gen, target_my_trans_id) = yield \
+ sync_target.get_sync_info(self.source._replica_uid)
+ except errors.DatabaseDoesNotExist:
+ logger.debug("Database isn't ready on server. Will be created.")
+ self.target_replica_uid = None
+ target_gen, target_trans_id = 0, ''
+ target_my_gen, target_my_trans_id = 0, ''
logger.debug(
"Soledad target sync info:\n"