On Tue, Sep 14 2021 at 01:55:14 PM -0400, Artom Lifshitz <alifshit@redhat.com> wrote:
Hey Elod and Vlad (and the ML, cc'ed)
This is continuing the conversation Elod and I had on IRC. The immediate context is [1], which is a test refactor backport that in turn enables conflict-free backporting of at least two fixes.
From Red Hat's point of view, we will have to care about stable/train for *very* long time, so we'd like to do everything we can to make our lives easier, including backportings things are aren't strictly necessary (like test refactors) in order to greatly facilitate future backports, which tend to be of the "func reproducer test + actual fix" variety.
Elod made the excellent point that while this approach does make backports to train much easier to both write and review, it also "postpones" all of the manual conflict resolution work onto anyone doing stable/stein backports.
I went and gathered data. I looked at the last 6 months of backports in Gerrit. At the time of this writing, stable/train 72 [2] had and stable/stein had 24 [3]. Out of the latter, Vlad Gusev was the main non-Red Hat contributor.
So my proposal is simple: I'm willing to help resolve conflicts in stable/stein backport for folks like Vlad, if it means making backports to stable/train easier. I'm confident that it would still mean an overall reduction in man-hours for backports, even if I become personally on the hook to deal with the fallout of backporting test refactors to stable/train.
In my view there is work and risk attached to resolve a conflict during backporting a bugfix, as well as work and risk attached to backporting a test refactor instead. If the former is bigger than the latter then I would do the latter. As the latter potentially helps avoiding multiple instance of the former I can imagine that the latter is a better general approach. Based on this I can even accept non-test but production code refactors to be backported as we did for example with the libvirt device detach series. Cheers, gibi
Cheers!
[1] https://review.opendev.org/c/openstack/nova/+/791481 [2] https://review.opendev.org/q/project:openstack/nova+branch:stable/train+-age... [3] https://review.opendev.org/q/project:openstack/nova+branch:stable/stein+-age...