Details
Description
Issue Summary
This is reproducible on Data Center: yes
When the push of a large number of refs is interrupted, the refs that got updated until the push was interrupted remain in the repository, however, none of the RefChangedEvents are published and therefore none of the background processing for ref changes are triggered, such as pull request rescoping, content hash recalculation, mirror syncing, updating the push log, etc.
Steps to Reproduce
- Generate a large number of new branches in a repository
for i in {1..10000}; do git checkout -b "branch_$i"; git commit --allow-empty -m"test $i"; git checkout -; done
- Push all the refs to the remote
git push origin --all
- When the output hangs after these log messages, wait for a few seconds
Writing objects: 100% (10809/10809), 5.70 MiB | 2.83 MiB/s, done. Total 10809 (delta 0), reused 6042 (delta 0), pack-reused 0
- Check the UI on the commits page, click the branch selector dropdown. Some new branches should already be visible, however, the push log should not have been updated yet.
- Cancel the push by pressing CTRL+C in your terminal.
Expected Results
The push log should be updated together with the new branches showing up in the commit page branch selector.
Actual Results
The branches only show up in the commits page branch selector dropdown and not in the push log. Pull request rescoping and mirror sync is not kicked off.
Workaround
Doing an atomic push should avoid this issue:
git push --all --atomic
Attachments
Issue Links
- relates to
-
BBSDEV-28632 Loading...