test/atomicity: guard chert-only optimization

This should potentially be updated to have an equivalent optimization
for the glass backend, but it in my unscientific tests, the glass backend
without the optimization is faster then the chert backend with.
This commit is contained in:
David Bremner 2016-04-08 22:49:48 -03:00
parent 45df509cb6
commit 45a0ab9e84

View file

@ -29,16 +29,19 @@ class RenameBreakpoint(gdb.Breakpoint):
self.n = 0
def stop(self):
# As an optimization, only consider snapshots after a Xapian
# has really committed. Xapian overwrites record.base? as the
# last step in the commit, so keep an eye on their inumbers.
inodes = {}
for path in glob.glob('%s/.notmuch/xapian/record.base*' % maildir):
inodes[path] = os.stat(path).st_ino
if inodes == self.last_inodes:
# Continue
return False
self.last_inodes = inodes
xapiandir = '%s/.notmuch/xapian' % maildir
if os.path.isfile('%s/iamchert' % xapiandir):
# As an optimization, only consider snapshots after a
# Xapian has really committed. The chert backend
# overwrites record.base? as the last step in the commit,
# so keep an eye on their inumbers.
inodes = {}
for path in glob.glob('%s/record.base*' % xapiandir):
inodes[path] = os.stat(path).st_ino
if inodes == self.last_inodes:
# Continue
return False
self.last_inodes = inodes
# Save a backtrace in case the test does fail
backtrace = gdb.execute('backtrace', to_string=True)