diff options
| -rw-r--r-- | common/src/leap/soledad/common/backend.py | 2 | ||||
| -rw-r--r-- | common/src/leap/soledad/common/couch/__init__.py | 11 | 
2 files changed, 8 insertions, 5 deletions
| diff --git a/common/src/leap/soledad/common/backend.py b/common/src/leap/soledad/common/backend.py index 5c995d38..4a29ca87 100644 --- a/common/src/leap/soledad/common/backend.py +++ b/common/src/leap/soledad/common/backend.py @@ -73,8 +73,8 @@ class SoledadBackend(CommonBackend):      def batch_end(self):          if not self.BATCH_SUPPORT:              return -        self.batching = False          self._database.batch_end() +        self.batching = False          for name in self.after_batch_callbacks:              self.after_batch_callbacks[name]()          self.after_batch_callbacks = None diff --git a/common/src/leap/soledad/common/couch/__init__.py b/common/src/leap/soledad/common/couch/__init__.py index f19b0acb..6f233b26 100644 --- a/common/src/leap/soledad/common/couch/__init__.py +++ b/common/src/leap/soledad/common/couch/__init__.py @@ -658,7 +658,7 @@ class CouchDatabase(object):          _, _, data = resource.get_json(**kwargs)          return data -    def _allocate_new_generation(self, doc_id, transaction_id): +    def _allocate_new_generation(self, doc_id, transaction_id, save=True):          """          Allocate a new generation number for a document modification. @@ -698,10 +698,12 @@ class CouchDatabase(object):                      DOC_ID_KEY: doc_id,                      TRANSACTION_ID_KEY: transaction_id,                  } -                self._database.save(gen_doc) +                if save: +                    self._database.save(gen_doc)                  break  # succeeded allocating a new generation, proceed              except ResourceConflict:                  pass  # try again! +        return gen_doc      def save_document(self, old_doc, doc, transaction_id):          """ @@ -780,6 +782,7 @@ class CouchDatabase(object):                      headers=envelope.headers)              except ResourceConflict:                  raise RevisionConflict() +            self._allocate_new_generation(doc.doc_id, transaction_id)          else:              for name, attachment in attachments.items():                  del attachment['follows'] @@ -788,12 +791,12 @@ class CouchDatabase(object):                  attachment['data'] = binascii.b2a_base64(                      parts[index]).strip()              couch_doc['_attachments'] = attachments +            gen_doc = self._allocate_new_generation(doc.doc_id, transaction_id, save=False)              self.batch_docs[doc.doc_id] = couch_doc +            self.batch_docs[gen_doc['_id']] = gen_doc              last_gen, last_trans_id = self.batch_generation              self.batch_generation = (last_gen + 1, transaction_id) -        self._allocate_new_generation(doc.doc_id, transaction_id) -      def _new_resource(self, *path):          """          Return a new resource for accessing a couch database. | 
