Monday, 2023-11-13

yoctozeptomorning; the q of the day is: how do I debug a MERGE_FAILURE? :D
yoctozeptolike "This change was not merged by the code review system." is not sufficient ;p10:51
yoctozeptoI mean, firstly, is it more like 4xx or 5xx10:51
*** dhill is now known as Guest683012:24
fungiyoctozepto: that generally means zuul's cgit thought the change was mergeable but gerrit's jgit did not (zuul is configured to attempt to reproduce the limitations of jgit's merge algorithm but doesn't perform 100% identically)13:03
fungithe most common way we've been able to reproduce that problem is with n-way octopus merges where n is upwards of 5 commits13:03
fungiyoctozepto: if that was the cause, usually a trivial rebase of one of the changes and then approving again should get them to merge fine, but i can take a look in gerrit's log around the time those merges failed and see if it has more clues13:10
fungiyoctozepto: oh!13:11
fungilooks like the parent of isn't current, like you revised and merged the parent without rebasing 900645 onto the new state of the parent13:11
fungiof you expand the "show all" next to the change info heading in the top-left corner and then hover over the "i" icon next to the parent, it indicates that13:12
fungithe current parent of 900645 was patchset 4 of 899798 while patchset 5 is what merged13:13
fungisince the parent commit of 900645 doesn't (and won't) exist in the master branch history, there's no way for 900645 to be merged to the branch13:14
fungirebasing it onto the master branch state will definitely solve that13:15
yoctozeptothanks, fungi!13:15
yoctozeptomy bad for missing that13:15
fungii thought zuul normally caught that, but i may be misremembering13:15
yoctozeptoI kind of feel like the previous gerrit UI was easily showing out-of-date parents13:16
yoctozeptobut this one not so much13:16
fungiyoctozepto: another indicator that might be easier to spot is the "(Merged)" being colored red instead of grey next to the parent in the relation chain at the top-right13:16
yoctozeptowhat do these colors mean anyway?13:17
fungii don't think the ui designers documented it anywhere i've seen, but it looks like green means active (you'll see it next to children that aren't merged yet) and red means something like invalid (i've only ever seen it next to parents that are abandoned or where the patchset that merged isn't the actual parent patchset)13:19
fungias for why the ui designers don't make it more obvious, i expect that's because it's not as relevant for some of gerrit's other merge methods (for example, the rebase-if-necessary method will internally rebase changes before merging them, which also has other drawbacks)13:21
yoctozeptoI see, thanks for insights!14:10
*** dhill is now known as Guest684114:30

Generated by 2.17.3 by Marius Gedminas - find it at!