mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-04-16 15:08:58 +00:00
backupdb.did_create_directory: use REPLACE INTO, not INSERT INTO + ignore error
This handles the case where we upload a new tahoe directory for a previously-processed local directory, possibly creating a new dircap (if the metadata had changed). Now we replace the old dirhash->dircap record. The previous behavior left the old record in place (with the old dircap and timestamps), so we'd never stop creating new directories and never converge on a null backup.
This commit is contained in:
parent
f6f8256b35
commit
e2031aff0f
@ -353,14 +353,11 @@ class BackupDB_v2:
|
||||
|
||||
def did_create_directory(self, dircap, dirhash):
|
||||
now = time.time()
|
||||
try:
|
||||
self.cursor.execute("INSERT INTO directories VALUES (?,?,?,?)",
|
||||
(dirhash, dircap, now, now))
|
||||
except (self.sqlite_module.IntegrityError,
|
||||
self.sqlite_module.OperationalError):
|
||||
# dirhash was already added: maybe they did mkdir and called us
|
||||
# even though we told them the didn't have to
|
||||
pass
|
||||
# if the dirhash is already present (i.e. we've re-uploaded an
|
||||
# existing directory, possibly replacing the dircap with a new one),
|
||||
# update the record in place. Otherwise create a new record.)
|
||||
self.cursor.execute("REPLACE INTO directories VALUES (?,?,?,?)",
|
||||
(dirhash, dircap, now, now))
|
||||
self.connection.commit()
|
||||
|
||||
def did_check_directory_healthy(self, dircap, results):
|
||||
|
Loading…
x
Reference in New Issue
Block a user