Subject: Re: Testsuite failure on s390x and sparc64 after 6840fe9ee2

From: Patrick Steinhardt <[email-masked]>
Date: Fri, 28 Mar 2025 10:29:16 +0100

On Wed, Mar 26, 2025 at 06:27:50PM -0400, Todd Zullinger wrote:
> John Paul Adrian Glaubitz wrote:
> > the following commit:
> > 
> > commit 6840fe9ee29ab51ffd7d924c624dc62da22c50bf
> > Author: Derrick Stolee <[email-masked]>
> > Date:   Mon Feb 3 17:11:05 2025 +0000
> > 
> >     backfill: add --min-batch-size=<n> option
> >     
> >     Users may want to specify a minimum batch size for their needs. This is only
> >     a minimum: the path-walk API provides a list of OIDs that correspond to the
> >     same path, and thus it is optimal to allow delta compression across those
> >     objects in a single server request.
> >     
> >     We could consider limiting the request to have a maximum batch size in the
> >     future. For now, we let the path-walk API batches determine the
> >     boundaries.
> > (...)
> > 
> > broke the testsuite on s390x [1] and sparc64 [2]. The following test fails:
> > 
> > not ok 4 - do partial clone 2, backfill min batch size
> > 
> > CC'ing the author which is Derrick Stolee.
> 
> I reported this during the rc period.  I didn't hear back on
> it, but hopefully your message will arrive at a more
> convenient time. :)
> 
> https://lore.kernel.org/git/[email-masked]/

Copy-pasting the test logs from that mail:

    expecting success of 5620.4 'do partial clone 2, backfill min batch size':
            git clone --no-checkout --filter=blob:none      \
                    --single-branch --branch=main           \
                    "file://$(pwd)/srv.bare" backfill2 &&
            GIT_TRACE2_EVENT="$(pwd)/batch-trace" git \
                    -C backfill2 backfill --min-batch-size=20 &&
            # Batches were used
            test_trace2_data promisor fetch_count 20 <batch-trace >matches &&
            test_line_count = 2 matches &&
            test_trace2_data promisor fetch_count 8 <batch-trace &&
            # No more missing objects!
            git -C backfill2 rev-list --quiet --objects --missing=print HEAD >revs2 &&
            test_line_count = 0 revs2
    +++ pwd
    ++ git clone --no-checkout --filter=blob:none --single-branch --branch=main 'file:///tmp/git-t.sYdo/trash directory.t5620-backfill/srv.bare' backfill2
    Cloning into 'backfill2'...
    +++ pwd
    ++ GIT_TRACE2_EVENT='/tmp/git-t.sYdo/trash directory.t5620-backfill/batch-trace'
    ++ git -C backfill2 backfill --min-batch-size=20
    ++ test_trace2_data promisor fetch_count 20
    ++ grep -e '"category":"promisor","key":"fetch_count","value":"20"'
    error: last command exited with $?=1
    not ok 4 - do partial clone 2, backfill min batch size

It would be nice to learn what the file contains instead of the expected
string, which might give us a bit more of a hint what's wrong. You can
for example apply the following patch:

diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
index 79377bc0fc2..197494cd28c 100644
--- a/t/test-lib-functions.sh
+++ b/t/test-lib-functions.sh
@@ -1975,7 +1975,7 @@ test_region () {
 #	GIT_TRACE2_EVENT="$(pwd)/trace.txt" git pack-objects ... &&
 #	test_trace2_data pack-objects reused N <trace2.txt
 test_trace2_data () {
-	grep -e '"category":"'"$1"'","key":"'"$2"'","value":"'"$3"'"'
+	test_grep -e '"category":"'"$1"'","key":"'"$2"'","value":"'"$3"'"'
 }
 
 # Given a GIT_TRACE2_EVENT log over stdin, writes to stdout a list of URLs

If you then re-run the test with `-ix` we should end up printing the
contents of that non-matching file.

Thanks!

Patrick