There are many ways a commit can break the Geode CI pipeline[1] despite our required PR checks, such as: - merge a PR that failed some non-required PR checks - merge a PR that last ran checks awhile ago and now interacts unexpectedly with other recent changes - merge a PR that fails Windows tests - merge a PR that fails Benchmarks tests
When a bad commit gets through for whatever reason, what should happen next? For example: - bring it up on the dev list - someone should revert the change as soon as possible, allowing the pipeline to remain green while the issue is addressed - a reasonable amount of time should be allowed for someone to make a quick fix, otherwise revert. - the pipeline should remain broken for as long as it takes to fix, as long as there is clear communication that someone is working on it - everyone look the other way and hope it fixes itself I’m sure there are other ideas as well. A related question is *who* can or should revert a bad commit? Only the person that merged the PR? Only the original author of the PR? The first person to notice the problem? What is a reasonable amount of time for this to happen? 2 hours? 2 days? 2 weeks? Does it depend whether the bad commit is also affecting PR checks for everyone else vs only depriving downstream consumers of new Geode -SNAPSHOTs? Would you take offense if someone else reverted your commit? Does is make a difference if your commit is exposing an existing issue (as opposed to introducing a new bug)? Is there a perception that reverts create a lot of extra work? (they shouldn’t--just start your rework PR with a revert of the revert, then add additional commits that resolve the issue, so reviewers can easily see what was missing the first time) This is a discussion thread, not a vote. We trust committers to do what’s best. Would embracing a “anyone can revert, no shame” revert-first-then-fix culture benefit our community, or is our current easygoing approach working just fine? [1] https://concourse.apachegeode-ci.info/teams/main/pipelines/apache-develop-main