summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKali Kaneko <kali@leap.se>2014-03-11 11:20:29 -0400
committerKali Kaneko <kali@leap.se>2014-03-11 14:55:57 -0400
commit23e55ac38a41f1f2c3e1b49ea2ef13d8da561f57 (patch)
tree3d418c8fd443c87ef37e220c584075f233c0c8ec
parenta8d002714e4ce2ff487785357cc01d082ffad537 (diff)
do not block on the lock...
-rw-r--r--client/src/leap/soledad/client/__init__.py31
-rw-r--r--client/src/leap/soledad/client/sqlcipher.py7
2 files changed, 32 insertions, 6 deletions
diff --git a/client/src/leap/soledad/client/__init__.py b/client/src/leap/soledad/client/__init__.py
index a8d68c88..72db5d96 100644
--- a/client/src/leap/soledad/client/__init__.py
+++ b/client/src/leap/soledad/client/__init__.py
@@ -1086,14 +1086,33 @@ class Soledad(object):
performed.
:rtype: str
"""
+ #return
+ local_gen = None
if self._db:
# acquire lock before attempt to sync
- with Soledad.syncing_lock[self._db._get_replica_uid()]:
- local_gen = self._db.sync(
- urlparse.urljoin(self.server_url, 'user-%s' % self._uuid),
- creds=self._creds, autocreate=True)
- signal(SOLEDAD_DONE_DATA_SYNC, self._uuid)
- return local_gen
+ replica_uid = self._db._get_replica_uid()
+ logger.debug("REPLICA UID: %s", replica_uid)
+ lock = Soledad.syncing_lock[replica_uid]
+ # optional wait flag used to avoid blocking
+ if not lock.acquire(False):
+ logger.debug('Already syncing... Skipping!')
+ return
+ else:
+ print "CLIENT syncing..."
+ try:
+ local_gen = self._db.sync(
+ urlparse.urljoin(
+ self.server_url, 'user-%s' % self._uuid),
+ creds=self._creds, autocreate=True)
+ #signal(SOLEDAD_DONE_DATA_SYNC, self._uuid)
+ except Exception as exc:
+ logger.error("error during soledad sync")
+ logger.exception(exc)
+ finally:
+ lock.release()
+ if local_gen is not None:
+ print "CLIENT synced!!!", local_gen
+ return local_gen
def need_sync(self, url):
"""
diff --git a/client/src/leap/soledad/client/sqlcipher.py b/client/src/leap/soledad/client/sqlcipher.py
index 3aea340d..a17c6a5f 100644
--- a/client/src/leap/soledad/client/sqlcipher.py
+++ b/client/src/leap/soledad/client/sqlcipher.py
@@ -351,6 +351,8 @@ class SQLCipherDatabase(sqlite_backend.SQLitePartialExpandDatabase):
:return: The local generation before the synchronisation was performed.
:rtype: int
"""
+ print "***********************"
+ print "SQLCIPHER: sync started"
if not self.syncer:
self._create_syncer(url, creds=creds)
@@ -365,7 +367,12 @@ class SQLCipherDatabase(sqlite_backend.SQLitePartialExpandDatabase):
logger.info("Replacing connection and trying again...")
self._syncer = None
self._create_syncer(url, creds=creds)
+ print "SQLCIPHER: syncer created, about to sync..."
res = self.syncer.sync(autocreate=autocreate)
+ except Exception:
+ logger.error("error SQLITE sync")
+ raise
+ print "SQLCIPHER: sync DONE"
return res
@property