Subject: [BUG] 2.44.0 t7704.9 Fails on NonStop ia64

From: <[email-masked]>
Date: Sun, 25 Feb 2024 13:44:48 -0500

This appears to be a new issue introduced at 2.44.0. It only occurs on
NonStop ia64 but not on x86. I am not sure why this is happening although
1Mb exceeds the single I/O size on this machine.

expecting success of 7704.9 '--max-cruft-size with pruning':
        git init max-cruft-size-prune &&
        (
                cd max-cruft-size-prune &&

                test_commit base &&
                foo="$(generate_random_blob foo $((1024*1024)))" &&
                bar="$(generate_random_blob bar $((1024*1024)))" &&
                baz="$(generate_random_blob baz $((1024*1024)))" &&

                test-tool chmtime -10000 "$objdir/$(test_oid_to_path
"$foo")" &&

                git repack -d --cruft --max-cruft-size=1M &&

                # backdate the mtimes of all cruft packs to validate
                # that they were rewritten as a result of pruning
                ls $packdir/pack-*.mtimes | sort >cruft.before &&
                for cruft in $(cat cruft.before)
                do
                        mtime="$(test-tool chmtime --get -10000 "$cruft")"
&&
                        echo $cruft $mtime >>mtimes || return 1
                done &&

                # repack (and prune) with a --max-cruft-size to ensure
                # that we appropriately split the resulting set of packs
                git repack -d --cruft --max-cruft-size=1M \
                        --cruft-expiration=10.seconds.ago &&
                ls $packdir/pack-*.mtimes | sort >cruft.after &&

                for cruft in $(cat cruft.after)
                do
                        old_mtime="$(grep $cruft mtimes | cut -d" " -f2)" &&
                        new_mtime="$(test-tool chmtime --get $cruft)" &&
                        test $old_mtime -lt $new_mtime || return 1
                done &&

                test_line_count = 3 cruft.before &&
                test_line_count = 2 cruft.after &&
                test_must_fail git cat-file -e $foo &&
                git cat-file -e $bar &&
                git cat-file -e $baz
        )

Initialized empty Git repository in
/home/ituglib/randall/jenkins/.jenkins/workspace/Git_Pipeline/t/trash
directory.t7704-repack-cruft/max-cruft-size-prune/.git/
[master (root-commit) d1ff1c9] base
 Author: A U Thor mailto:[email-masked]
 1 file changed, 1 insertion(+)
 create mode 100644 base.t
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Enumerating cruft objects: 6, done.
Counting objects: 100% (3/3), done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), done.
Total 3 (delta 0), reused 3 (delta 0), pack-reused 0 (from 0)
ls: cannot access '.git/objects/pack/pack-*.mtimes': No such file or
directory
test_line_count: line count for cruft.after != 2
not ok 9 - --max-cruft-size with pruning
#
#               git init max-cruft-size-prune &&
#               (
#                       cd max-cruft-size-prune &&
#
#                       test_commit base &&
#                       foo="$(generate_random_blob foo $((1024*1024)))" &&
#                       bar="$(generate_random_blob bar $((1024*1024)))" &&
#                       baz="$(generate_random_blob baz $((1024*1024)))" &&
#
#                       test-tool chmtime -10000 "$objdir/$(test_oid_to_path
"$foo")" &&
#
#                       git repack -d --cruft --max-cruft-size=1M &&
#
#                       # backdate the mtimes of all cruft packs to validate
#                       # that they were rewritten as a result of pruning
#                       ls $packdir/pack-*.mtimes | sort >cruft.before &&
#                       for cruft in $(cat cruft.before)
#                       do
#                               mtime="$(test-tool chmtime --get -10000
"$cruft")" &&
#                               echo $cruft $mtime >>mtimes || return 1
#                       done &&
#
#                       # repack (and prune) with a --max-cruft-size to
ensure
#                       # that we appropriately split the resulting set of
packs
#                       git repack -d --cruft --max-cruft-size=1M \
#                               --cruft-expiration=10.seconds.ago &&
#                       ls $packdir/pack-*.mtimes | sort >cruft.after &&
#
#                       for cruft in $(cat cruft.after)
#                       do
#                               old_mtime="$(grep $cruft mtimes | cut -d" "
-f2)" &&
#                               new_mtime="$(test-tool chmtime --get
$cruft)" &&
#                               test $old_mtime -lt $new_mtime || return 1
#                       done &&
#
#                       test_line_count = 3 cruft.before &&
#                       test_line_count = 2 cruft.after &&
#                       test_must_fail git cat-file -e $foo &&
#                       git cat-file -e $bar &&
#                       git cat-file -e $baz
#               )
#
1..9

--
Brief whoami: NonStop&UNIX developer since approximately
UNIX(421664400)
NonStop(211288444200000000)
-- In real life, I talk too much.