On 11/19/2018 2:00 PM, Ben Peart wrote:


On 11/19/2018 10:40 AM, Derrick Stolee wrote:

There are a lot of lines introduced by the IEOT extension in these commits:

 > Ben Peart      3255089ad: ieot: add Index Entry Offset Table (IEOT) extension  > Ben Peart      3b1d9e045: eoie: add End of Index Entry (EOIE) extension  > Ben Peart      77ff1127a: read-cache: load cache entries on worker threads  > Ben Peart      abb4bb838: read-cache: load cache extensions on a worker thread  > Ben Peart      c780b9cfe: config: add new index.threads config setting  > Ben Peart      d1664e73a: add: speed up cmd_add() by utilizing read_cache_preload()  > Ben Peart      fa655d841: checkout: optimize "git checkout -b <new_branch>"


These should be hit if you run the test suite with GIT_TEST_INDEX_THREADS=2.  Without that, the indexes for the various tests are too small to trigger multi-threaded index reads/writes.

From t/README:

GIT_TEST_INDEX_THREADS=<n> enables exercising the multi-threaded loading
of the index for the whole test suite by bypassing the default number of
cache entries and thread minimums. Setting this to 1 will make the
index loading single threaded.

I updated my build to add GIT_TEST_INDEX_THREADS=2 and I still see lots of uncovered stuff, including that load_cache_entries_threaded() is never run.

I added the following diff to my repo and ran the test suite manually with GIT_TEST_INDEX_THREADS=2 and it didn't fail:

diff --git a/read-cache.c b/read-cache.c
index 4ca81286c0..36502586a2 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -2057,6 +2057,9 @@ static unsigned long load_cache_entries_threaded(struct index_state *istate, con
        struct load_cache_entries_thread_data *data;
        unsigned long consumed = 0;

+       fprintf(stderr, "load_cache_entries_threaded\n");
+       exit(1);
+
        /* a little sanity checking */
        if (istate->name_hash_initialized)
                BUG("the name hash isn't thread safe");

Am I missing something? Is there another variable I should add?

When I look for where the GIT_TEST_INDEX_THREADS variable is checked, I see that the calls to git_config_get_index_threads() are followed by a check for NO_PTHREADS (setting the number of threads to 1 again). Is it possible that my compiler environment is not allowing me to even compile with threads?

Thanks,
-Stolee



Reply via email to