]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/commitdiff
Add last uploaded timestamp comparison for remote conflict detection
authorDavid Stainton <dstainton415@gmail.com>
Wed, 28 Oct 2015 15:41:48 +0000 (16:41 +0100)
committerDaira Hopwood <daira@jacaranda.org>
Mon, 25 Jan 2016 15:52:14 +0000 (15:52 +0000)
src/allmydata/frontends/magic_folder.py
src/allmydata/magicfolderdb.py

index 1be3e683adf3b9e8eb003093982b0c18521613e0..52a146bb53a037f5310dab282d500d277d04b43f 100644 (file)
@@ -707,10 +707,12 @@ class Downloader(QueueMixin, WriteFileMixin):
                     if dmd_last_downloaded_uri != local_last_downloaded_uri:
                         is_conflict = True
                         self._count('objects_conflicted')
-
-                #dmd_last_uploaded_uri = metadata.get('last_uploaded_uri', None)
-                #local_last_uploaded_uri = ...
-
+                    else:
+                        dmd_last_uploaded_uri = metadata.get('last_uploaded_uri', None)
+                        local_last_uploaded_uri = self._db.get_last_uploaded_uri(relpath_u)
+                        if dmd_last_uploaded_uri != local_last_uploaded_uri:
+                            is_conflict = True
+                            self._count('objects_conflicted')
             if relpath_u.endswith(u"/"):
                 if metadata.get('deleted', False):
                     self._log("rmdir(%r) ignored" % (abspath_u,))
index 0c76a7b012a6cbc3ffd38c32d93032010599bf4b..e3649d4edea3e6db91df162400a454467acc0f95 100644 (file)
@@ -91,6 +91,22 @@ class MagicFolderDB(object):
         else:
             return row[0]
 
+    def get_last_uploaded_uri(self, relpath_u):
+        """
+        Return the last downloaded uri recorded in the magic folder db.
+        If none are found then return None.
+        """
+        c = self.cursor
+        c.execute("SELECT last_uploaded_uri"
+                  " FROM local_files"
+                  " WHERE path=?",
+                  (relpath_u,))
+        row = self.cursor.fetchone()
+        if not row:
+            return None
+        else:
+            return row[0]
+
     def get_local_file_version(self, relpath_u):
         """
         Return the version of a local file tracked by our magic folder db.