summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Shyba <victor.shyba@gmail.com>2015-09-19 14:25:30 -0300
committerVictor Shyba <victor.shyba@gmail.com>2015-09-28 16:52:53 -0300
commitc4c280e12bf70dd41183d2d2ffbba200a45d0247 (patch)
tree992d4344f1e7d58b6fe1057c0a7e367d59eab3d6
parent7b1591e3d561aa6525318235e702eebeb6708560 (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"