new: Don't update DB mtime if FS mtime equals wall-clock time.
authorAustin Clements <amdragon@MIT.EDU>
Wed, 29 Jun 2011 07:10:54 +0000 (03:10 -0400)
committerCarl Worth <cworth@cworth.org>
Wed, 29 Jun 2011 22:26:04 +0000 (15:26 -0700)
commit8c39e8d6fbc1202605494d481b27be6bcccaf500
tree03eca9915a7b7b4da5012f7d292a33996cbe1915
parentec1b568929f53b99362d6b254085da03231a2a26
new: Don't update DB mtime if FS mtime equals wall-clock time.

This fixes a race where multiple message deliveries in the same second
with an intervening notmuch new could result in messages being ignored
by notmuch (at least, until a later delivery forced a rescan).
Because mtimes only have second granularity, later deliveries in the
same second won't change the directory mtime, and hence won't trigger
notmuch new to rescan the directory.  This situation can only occur
when notmuch new is being run at the same second as the directory's
modification time, so simply don't update the saved mtime in this
case.

This very race happens all over the test suite, and is currently
compensated for with increment_mtime (and, occasionally, luck).  With
this change, increment_mtime becomes unnecessary.
notmuch-new.c