git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [BUG] t7063-status-untracked-cache flaky?

From
Junio C Hamano <gitster@pobox.com>
Date
Oct 16, 2015, 20:34 UTC
Message-ID
<xmqqfv1aeena.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<1445026298.20887.28.camel@twopensource.com>
David Turner <dturner@twopensource.com> writes:
Show 20 quoted lines
> The problem is:
>
> trash directory.t7063-status-untracked-cache$ diff trace trace.expect 
> 3,4c3,4
> < directory invalidation: 1
> < opendir: 1
> ---
>> directory invalidation: 2
>> opendir: 2
>
>
> I can repro on a SSD.
>
> I had to try many times to reproduce (I think even more the second
> time). I just ran the test in a while loop until it failed.
>
> I suspect that the kernel might be a bit slow to update the mtime on the
> directory, but I have not yet been able to repro, and I don't understand
> why it only happens in this one test, since sparseness should be
> completely unrelated.

If you are invalidating your cache based on mtime of the directory, an operation within mtime granularity can cause you to miss it, unless you try to be conservative and do the "assume invalid if racy". And if you do "assume invalid if racy", the result will become timing dependent. You may end up invalidating more than absolutely necessary, i.e. the test writer may have known that at least 1 must be definitely stale at that point in the test, but if another directory was iffy and the code played safe, you would see one more invalidation than expected (which would lead to scanning the directory, hence one more opendir).

Is that what is going on here?
Previous: David TurnerNext: David Turner
Message 5 of 6 in “[BUG] t7063-status-untracked-cache flaky?”
  1. Lars SchneiderOct 15, 2015
  2. David TurnerOct 15, 2015
  3. Torsten BögershausenOct 16, 2015
  4. David TurnerOct 16, 2015
  5. Junio C HamanoOct 16, 2015
  6. David TurnerOct 16, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.