Thread (15 messages) 15 messages, 4 authors, 2024-02-27

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

From: <hidden>
Date: 2024-02-25 19:08:43

On Sunday, February 25, 2024 1:45 PM, I wrote:
To: git@vger.kernel.org
Subject: [BUG] 2.44.0 t7704.9 Fails on NonStop ia64

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:author@example.com
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
I did find the following calls to write(), one of which might be involved.
write() should not be used directly unless the count is clearly very small.
Xwrite() should be used instead. There are other calls but those are either
small or not on platform.

reftable/writer.c:              int n = w->write(w->write_arg, zeroed,
w->pending_padding);
reftable/writer.c:      n = w->write(w->write_arg, data, len);
run-command.c:                  len = write(io->fd, io->u.out.buf,
t/helper/test-path-utils.c:                     if (write(1, buffer, count)
< 0)
t/helper/test-windows-named-pipe.c:             write(1, buf, nbr);
t/helper/test-windows-named-pipe.c:             write(1, buf, nbr);
trace2/tr2_dst.c:       bytes = write(fd, buf_line->buf, buf_line->len);


Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help