mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-02-21 18:06:46 +00:00
fix code that adds version number of deleted file to magic-folder db
This commit is contained in:
parent
45b8e578eb
commit
b01bc80117
@ -2,6 +2,7 @@
|
||||
import sys, os, stat
|
||||
import os.path
|
||||
from collections import deque
|
||||
import time
|
||||
|
||||
from twisted.internet import defer, reactor, task
|
||||
from twisted.python.failure import Failure
|
||||
@ -307,14 +308,18 @@ class Uploader(QueueMixin):
|
||||
self._pending.remove(path_u) # FIXME make _upload_pending hold relative paths
|
||||
relpath_u = os.path.relpath(path_u, self._local_path_u)
|
||||
encoded_name_u = magicpath.path2magic(relpath_u)
|
||||
|
||||
def get_metadata(result):
|
||||
try:
|
||||
metadata_d = self._upload_dirnode.get_metadata_for(encoded_name_u)
|
||||
except KeyError:
|
||||
return Failure()
|
||||
return metadata_d
|
||||
|
||||
def get_filenode(path_u):
|
||||
try:
|
||||
node_d = self._upload_dirnode.get(path_u)
|
||||
except KeyError:
|
||||
return Failure()
|
||||
return node_d
|
||||
if not os.path.exists(path_u):
|
||||
self._log("drop-upload: notified object %r disappeared "
|
||||
"(this is normal for temporary objects)" % (path_u,))
|
||||
@ -322,13 +327,27 @@ class Uploader(QueueMixin):
|
||||
d2 = defer.succeed(None)
|
||||
if self._db.check_file_db_exists(relpath_u):
|
||||
d2.addCallback(get_metadata)
|
||||
current_version = self._db.get_local_file_version(relpath_u) + 1
|
||||
def set_deleted(metadata):
|
||||
current_version = self._db.get_local_file_version(relpath_u) + 1
|
||||
print "SET_DELETED new version %s----------------------------------------------" % (current_version,)
|
||||
metadata['version'] = current_version
|
||||
metadata['deleted'] = True
|
||||
empty_uploadable = Data("", self._client.convergence)
|
||||
return self._upload_dirnode.add_file(encoded_name_u, empty_uploadable, overwrite=True, metadata=metadata)
|
||||
d2.addCallback(set_deleted)
|
||||
def add_db_entry(filenode):
|
||||
filecap = filenode.get_uri()
|
||||
size = 0
|
||||
now = time.time()
|
||||
ctime = now
|
||||
mtime = now
|
||||
print "before change magic-folder db"
|
||||
self._db.did_upload_file(filecap, relpath_u, current_version, int(mtime), int(ctime), size)
|
||||
print "after change magic-folder db %s %s %s %s %s %s-----------------------" % (filecap, relpath_u, current_version, mtime, ctime, size)
|
||||
self._count('files_uploaded')
|
||||
d2.addCallback(lambda x: get_filenode(encoded_name_u))
|
||||
d2.addCallback(add_db_entry)
|
||||
|
||||
d2.addCallback(lambda x: Exception("file does not exist"))
|
||||
return d2
|
||||
elif os.path.islink(path_u):
|
||||
|
@ -322,6 +322,7 @@ class MagicFolderTestMixin(MagicFolderTestMixin, ShouldFailMixin, ReallyEqualMix
|
||||
|
||||
def _check_version_in_local_db(self, magicfolder, relpath_u, expected_version):
|
||||
version = magicfolder._db.get_local_file_version(relpath_u)
|
||||
print "_check_version_in_local_db %s---------------------------------" % (version,)
|
||||
self.failUnlessEqual(version, expected_version)
|
||||
|
||||
def test_alice_bob(self):
|
||||
@ -377,7 +378,7 @@ class MagicFolderTestMixin(MagicFolderTestMixin, ShouldFailMixin, ReallyEqualMix
|
||||
d.addCallback(Alice_wait_for_upload)
|
||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('uploader.objects_succeeded', client=self.alice_magicfolder._client), 2))
|
||||
d.addCallback(lambda ign: self._check_version_in_local_db(self.alice_magicfolder, u"file1", 1))
|
||||
d.addCallback(lambda ign: self._check_version_in_dmd(self.alice_magicfolder, u"file1", 1))
|
||||
d.addCallback(lambda ign: self._check_version_in_dmd(self.alice_magicfolder, u"file1", "1"))
|
||||
|
||||
d.addCallback(Bob_wait_for_download)
|
||||
d.addCallback(lambda ign: self.failUnlessReallyEqual(self._get_count('downloader.objects_downloaded', client=self.bob_magicfolder._client), 2))
|
||||
|
Loading…
x
Reference in New Issue
Block a user