On Sat, 28 Apr 2018, David Bremner <david@tethera.net> wrote:
> For me the following seems to consistently fail after between 30 and 500
> attempts
>
> export NOTMUCH_TEST_QUIET=yes; count=0; while ./T050-new.sh; do (( count++ )); echo $count; done
I believe this happens because the directory mtime is unchanged from the
previous scan in the test, and we skip the directory before we could
ignore the files. Quoting add_files():
/* If the directory's modification time in the filesystem is the
* same as what we recorded in the database the last time we
* scanned it, then we can skip the second pass entirely.
*
* We test for strict equality here to avoid a bug that can happen
* if the system clock jumps backward, (preventing new mail from
* being discovered until the clock catches up and the directory
* is modified again).
*/
I can't reproduce if I add this to the test:
diff --git a/test/T050-new.sh b/test/T050-new.sh
index 9025fa7aa63e..0db76f47130b 100755
--- a/test/T050-new.sh
+++ b/test/T050-new.sh
@@ -260,6 +260,7 @@ output=$(NOTMUCH_NEW 2>&1)
test_expect_equal "$output" "No new mail."
test_begin_subtest "Ignore files and directories specified in new.ignore (regexp)"
+touch "${MAIL_DIR}" # force rescan of the top level directory
notmuch config set new.ignore ".git" "/^bro.*ink\$/" "/ignored.*file/"
output=$(NOTMUCH_NEW --debug 2>&1 | sort)
test_expect_equal "$output" \
---
However, I'm not sure even that is enough if all this happens in the
same second. I think the way notmuch new is written, it may skip as long
as it ensures a subsequent scan will catch the modified files:
/* If the directory's mtime is the same as the wall-clock time
* when we stat'ed the directory, we skip updating the mtime in
* the database because a message could be delivered later in this
* same second. This may lead to unnecessary re-scans, but it
* avoids overlooking messages. */
I think we can make the problem less likely with the touch, but as
everything gets faster, we might hit this more and more. One approach
might be a notmuch new --force option that would rescan all directories
regardless of mtimes. We could use this for testing (except when we're
testing the optimization).
BR,
Jani.
_______________________________________________
notmuch mailing list
notmuch@notmuchmail.org
https://notmuchmail.org/mailman/listinfo/notmuch