RFR: 1069: PR ends up in bad state if interrupted just after push
erikj at openjdk.java.net
Tue Jun 8 13:46:26 UTC 2021
On Mon, 7 Jun 2021 23:25:03 GMT, Kevin Rushforth <kcr at openjdk.org> wrote:
>> This change adds a new transaction step when integrating a PR, to better handle if the bot gets interrupted mid integration. Currently, if the change is pushed and the bot is interrupted before closing, changing labels or adding the final "commit pushed" comment, the PR can end up in a limbo state.
>> The new step is another comment "Going to push commit as ..." which gets added right before the git push command is run. Using this comment, it's now possible to automatically recover if the bot gets interrupted. The integration command checks for any such comments and if found, checks if the commit hash is present in the target. If it is, the PR was already pushed, and the command will just close it out as normal.
>> I also decided to move the output of any rebase command to this prepush comment, so we don't risk losing it.
> bots/pr/src/main/java/org/openjdk/skara/bots/pr/IntegrateCommand.java line 233:
>> 231: var amendedHash = checkablePr.amendManualReviewers(localHash, censusInstance.namespace(), original);
>> 232: addPrePushComment(pr, amendedHash, rebaseMessage.toString());
>> 233: localRepo.push(amendedHash, pr.repository().url(), pr.targetRef());
> If the push fails and the bot dies, will it still be retried after this fix?
Yes, that's the idea at least, but I should write a test for it. If the push fails, the next time around, the prepush comment is found, but the hash is not found in the target, so the IntegrationCommand will continue as if nothing has happened.
More information about the skara-dev