{"thread":{"id":"62448","subject":"What's so special about almalinux-8?","startedAt":"2024-11-05T05:54:19Z","lastAt":"2024-11-06T00:31:18Z","messageCount":3,"participants":["Junio C Hamano","Jonathan Tan","Jeff King"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"506602","messageId":"xmqqbjyuted3.fsf@gitster.g","threadId":"62448","inReplyTo":null,"subject":"What's so special about almalinux-8?","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2024-11-05T05:54:16Z","receivedAt":"2024-11-05T05:54:19Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Everybody else seems to pass tests, but not this one\n\n  https://github.com/git/git/actions/runs/11677884048/job/32516504151#step:6:1995\n\nI am not (yet) so familiar with the topics in flight at this point,\nbut there are a few topics that deal with packing, lazy fetching,\nand commit-graph and object database being out of sync, which were\nhandled by a few topics by Jonathan, so I am CC'ing this if it rings\nbell for him.\n\n\n\nfailure: t5616.22 use fsck before and after manually fetching a missing subtree \n  \t# push new commit so server has a subtree\n  \tmkdir src/dir &&\n  \techo \"in dir\" >src/dir/file.txt &&\n  \tgit -C src add dir/file.txt &&\n  \tgit -C src commit -m \"file in dir\" &&\n  \tgit -C src push -u srv main &&\n  \tSUBTREE=$(git -C src rev-parse HEAD:dir) &&\n  \n  \trm -rf dst &&\n  \tgit clone --no-checkout --filter=tree:0 \"file://$(pwd)/srv.bare\" dst &&\n  \tgit -C dst fsck &&\n  \n  \t# Make sure we only have commits, and all trees and blobs are missing.\n  \tgit -C dst rev-list --missing=allow-any --objects main \\\n  \t\t>fetched_objects &&\n  \tawk -f print_1.awk fetched_objects |\n  \txargs -n1 git -C dst cat-file -t >fetched_types &&\n  \n  \tsort -u fetched_types >unique_types.observed &&\n  \techo commit >unique_types.expected &&\n  \ttest_cmp unique_types.expected unique_types.observed &&\n  \n  \t# Auto-fetch a tree with cat-file.\n  \tgit -C dst cat-file -p $SUBTREE >tree_contents &&\n  \tgrep file.txt tree_contents &&\n  \n  \t# fsck still works after an auto-fetch of a tree.\n  \tgit -C dst fsck &&\n  \n  \t# Auto-fetch all remaining trees and blobs with --missing=error\n  \tgit -C dst rev-list --missing=error --objects main >fetched_objects &&\n  \ttest_line_count = 88 fetched_objects &&\n  \n  \tawk -f print_1.awk fetched_objects |\n  \txargs -n1 git -C dst cat-file -t >fetched_types &&\n  \n  \tsort -u fetched_types >unique_types.observed &&\n  \ttest_write_lines blob commit tree >unique_types.expected &&\n  \ttest_cmp unique_types.expected unique_types.observed\n  \n  ++ mkdir src/dir\n  ++ echo 'in dir'\n  ++ git -C src add dir/file.txt\n  ++ git -C src commit -m 'file in dir'\n  [main 957c60b] file in dir\n   Author: A U Thor <author@example.com>\n   1 file changed, 1 insertion(+)\n   create mode 100644 dir/file.txt\n  ++ git -C src push -u srv main\n  To file:///__w/git/git/t/trash directory.t5616-partial-clone/srv.bare\n     129c8a2..957c60b  main -> main\n  branch 'main' set up to track 'srv/main'.\n  +++ git -C src rev-parse HEAD:dir\n  ++ SUBTREE=bc1967ebf96a4e914801c7ef8328140456a10f41\n  ++ rm -rf dst\n  +++ pwd\n  ++ git clone --no-checkout --filter=tree:0 'file:///__w/git/git/t/trash directory.t5616-partial-clone/srv.bare' dst\n  Cloning into 'dst'...\n  ++ git -C dst fsck\n  ++ git -C dst rev-list --missing=allow-any --objects main\n  ++ awk -f print_1.awk fetched_objects\n  ++ xargs -n1 git -C dst cat-file -t\n  ++ sort -u fetched_types\n  ++ echo commit\n  ++ test_cmp unique_types.expected unique_types.observed\n  ++ test 2 -ne 2\n  ++ eval 'diff -u' '\"$@\"'\n  +++ diff -u unique_types.expected unique_types.observed\n  ++ git -C dst cat-file -p bc1967ebf96a4e914801c7ef8328140456a10f41\n  ++ grep file.txt tree_contents\n  100644 blob d2cebd4f0a9e97a48a6139d09cafdb513ad8fee3\tfile.txt\n  ++ git -C dst fsck\n  dangling tree bc1967ebf96a4e914801c7ef8328140456a10f41\n  ++ git -C dst rev-list --missing=error --objects main\n  fatal: You are attempting to fetch 957c60b67968d2ab4144e7e2fbba99d6ad864e4e, which is in the commit graph file but not in the object database.\n  This is probably due to repo corruption.\n  If you are attempting to repair this repo corruption by refetching the missing object, use 'git fetch --refetch' with the missing object.\n  fatal: could not fetch 3246c304205324149983025431c5211438f41931 from promisor remote\n  error: last command exited with $?=128\n  not ok 22 - use fsck before and after manually fetching a missing subtree\n"},{"id":"506672","messageId":"20241105185439.3230561-1-jonathantanmy@google.com","threadId":"62448","inReplyTo":"xmqqbjyuted3.fsf@gitster.g","subject":"Re: What's so special about almalinux-8?","fromName":"Jonathan Tan","fromEmail":"jonathantanmy@google.com","sentAt":"2024-11-05T18:54:39Z","receivedAt":"2024-11-05T18:54:41Z","isPatch":false,"sender":{"key":"jonathantanmy@fastmail.com","avatar":null},"body":"Junio C Hamano <gitster@pobox.com> writes:\n> Everybody else seems to pass tests, but not this one\n> \n>   https://github.com/git/git/actions/runs/11677884048/job/32516504151#step:6:1995\n> \n> I am not (yet) so familiar with the topics in flight at this point,\n> but there are a few topics that deal with packing, lazy fetching,\n> and commit-graph and object database being out of sync, which were\n> handled by a few topics by Jonathan, so I am CC'ing this if it rings\n> bell for him.\n\nThat run refers to 95dcd58, so I fetched it and tried rerunning it on\nCI. It seems to pass:\n\n  https://github.com/jonathantanmy/git/actions/runs/11690124087\n\nHaving said that, I'm not sure what caused it to fail.\n\n>   ++ git -C dst rev-list --missing=error --objects main\n>   fatal: You are attempting to fetch 957c60b67968d2ab4144e7e2fbba99d6ad864e4e, which is in the commit graph file but not in the object database.\n>   This is probably due to repo corruption.\n>   If you are attempting to repair this repo corruption by refetching the missing object, use 'git fetch --refetch' with the missing object.\n>   fatal: could not fetch 3246c304205324149983025431c5211438f41931 from promisor remote\n>   error: last command exited with $?=128\n>   not ok 22 - use fsck before and after manually fetching a missing subtree\n\nThis is supposed to happen when we have a commit in the commit graph\nfile but not in the object DB, but the test is not testing that case -\n\"dst\" was cloned normally and we did not manipulate its object DB in any\nway (outside regular Git commands). So I'm not sure what happened.\n \n"},{"id":"506687","messageId":"20241106003110.GA814887@coredump.intra.peff.net","threadId":"62448","inReplyTo":"20241105185439.3230561-1-jonathantanmy@google.com","subject":"Re: What's so special about almalinux-8?","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2024-11-06T00:31:10Z","receivedAt":"2024-11-06T00:31:18Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Tue, Nov 05, 2024 at 10:54:39AM -0800, Jonathan Tan wrote:\n\n> Junio C Hamano <gitster@pobox.com> writes:\n> > Everybody else seems to pass tests, but not this one\n> > \n> >   https://github.com/git/git/actions/runs/11677884048/job/32516504151#step:6:1995\n> > \n> > I am not (yet) so familiar with the topics in flight at this point,\n> > but there are a few topics that deal with packing, lazy fetching,\n> > and commit-graph and object database being out of sync, which were\n> > handled by a few topics by Jonathan, so I am CC'ing this if it rings\n> > bell for him.\n> \n> That run refers to 95dcd58, so I fetched it and tried rerunning it on\n> CI. It seems to pass:\n> \n>   https://github.com/jonathantanmy/git/actions/runs/11690124087\n\nI ran:\n\n  ./t5616-partial-clone.sh --run=1-22  --stress\n\nand got the same familiar, though it took a while (about 40 iterations).\nSo I think the test is just flaky and the almalinux CI just got unlucky.\nAs for what causes the race, I have no idea. I don't see anything\nobviously timing oriented, so it could be something like\nnon-deterministic hashes. In my run this:\n\n> >   ++ git -C dst rev-list --missing=error --objects main\n> >   fatal: You are attempting to fetch 957c60b67968d2ab4144e7e2fbba99d6ad864e4e, which is in the commit graph file but not in the object database.\n> >   This is probably due to repo corruption.\n> >   If you are attempting to repair this repo corruption by refetching the missing object, use 'git fetch --refetch' with the missing object.\n> >   fatal: could not fetch 3246c304205324149983025431c5211438f41931 from promisor remote\n> >   error: last command exited with $?=128\n> >   not ok 22 - use fsck before and after manually fetching a missing subtree\n\nHad the same 957c60b679 for the first message, but the \"could not fetch\n$hash from promisor remote\" was 3cbc3c292cd156cbe9693f32a935a42c92351583,\nrather than what is shown above. So maybe relevant?\n\nI'm not planning to dig further, but maybe that gives you an avenue for\nreproducing.\n\n-Peff\n"}]}