Hi Paul,

My original motivation for this proposal is to improve the stability and availability of the CI system by not abusing it through lack of queue maintenance.

The situation exists today because there is fundamentally a shortage of committer bandwidth to complete code reviews.  This is exacerbated by the poor signal-to-noise ratio of the gerrit queue due to the size as well as by the growing reluctance to merge patches for which a committer is not a maintainer. [Thanks Benoit for pointing that out.]

IMHO, it is the responsibility of both the author of a patch and the maintainers/committers in the community to complete the review/merge cycle.  As a committer, I am personally reluctant to merge patches more than 30 days old because they have not been tested with the latest code.  A best practice would be for an author rebase any patches that have not been verified in a couple of weeks.  This not only has the benefit of re-testing the patch with the latest merged code, it moves the patch to the top of the gerrit queue where it is most visible.

In the past, I worked on an open source project which had a 7 day auto-abandon policy.  It took me a while to get used to it, but it worked quite effectively.  Feedback on patches was timely and the queue only contained patches which were actively ready for review. For VPP, I think that 7 days is way too short but as a maintainer of the CI, I believe it is important find a way to automatically protect the CI system which has been overly fragile.

To be perfectly honest, other than Andrew's proposal to tweak the auto-abandon parameters, I have not heard another solution that solves the problem of cleaning up the current queue and limiting the size of the queue in the future.  Is anyone going to volunteer to manually review/abandon 600+ gerrit changes?  Auto-assigning maintainers to gerrit changes is a separate issue. Please make a proposal to fix that in its own thread and I will help to get that implemented.

I fully understand that enabling auto-abandon in gerrit results in a bias towards preserving committers' time over submitters' time, but I think it is worth trying as it has the potential provide a positive benefit for both the stability of the CI and the management of the gerrit queue.

Thanks,
-daw-

On 1/29/2021 9:28 AM, Paul Vinciguerra wrote:
I am a firm -1.
I already have a python script that generates maintainers, but I would rather we look at the maintainer plugin which was contributed to gerrit by Cisco. https://gerrit.googlesource.com/plugins/maintainer/ <https://gerrit.googlesource.com/plugins/maintainer/>

As to Andrew's point, it is just as fair to propose that if a maintainer hasn't addressed a verified +1 in T+30, it is merged and it is then it will become a priority to the maintainer.

About a month or so ago, Ole +2'd and merged a change of mine that has been sitting for 2 releases, because Andrew -1'd for doing some testing and then left it.  Thank you, Ole.

When I first became a comitter, I submitted a change that Danjan -1'd that the feedback was that it was agreed to not accept.  Damjan +2'd and committed it on his own some 10 months later.  Thank you, Damjan.

There is a change in the system https://gerrit.fd.io/r/c/vpp/+/30559 <https://gerrit.fd.io/r/c/vpp/+/30559> that allows a user to build vpp if the system language is Chinese.  The author tagged the maintainer, and hasn't gotten a response.  I tested the patch and +1'd it to help save some time for the maintainer.  A week or so later, another comitter was tagged.  It is still sitting there.

When the question of adding worker tests to the framework came up, Klement sent me a link to work he had done over a year earlier that was never merged.

The Netgate folks had a changeset they were waiting a month or so for a review, then they were told that it was too close to the release to merge it.  It was merged, but the argument that "because we held you back, we're going to hold you back some more" is very anti-community.

I have MANY changes that I rely on that I cherry pick into my own builds.  I had a change that added the names to the established unix sockets for troubleshooting.  It was a good year old.  Neale saw it a month or so ago and merged it.  The maintainers did not.

I have uncommitted changes right now that fix issues in the build system that are blocking other changes from being merged.

Dave,
Let me know how I can help.

On Thu, Jan 28, 2021 at 11:36 AM Andrew Yourtchenko <ayour...@gmail.com <mailto:ayour...@gmail.com>> wrote:

    Dave,

    On 28 Jan 2021, at 16:59, Dave Wallace <dwallac...@gmail.com
    <mailto:dwallac...@gmail.com>> wrote:

     Andrew,

    The only issue I have with your proposal is that there is no way
    to implement it. Gerrit auto-abandon doesn't have a way to detect
    'T'.

    We could approximate it by setting
    changeCleanup.abandonIfMergeable to false, it’s not perfect, of
    course, but I think it will take care of most of the true “dead”
    changes.

    It seems like we already do have gerrit do the indexing, so it’s
    no-cost operation.



    While I agree with your idea that 'T' should be based on a time
    other than the initial patch upload, I don't see a mechanism to
    do so.  It would appear to me that the only other solution would
    be to make the window larger and anything up to the release cycle
    duration (120 days) seems reasonable to me.

    The other point I would make is that auto-abandon is not
    deletion.  Thus it puts more ownership on the patch creator to
    poke the maintainer(s) for a review. And I'm assuming that
    'Restore' resets the clock on the auto-abandon trigger.

    True, and we could put the appropriate abandon message that would
    describes what to do and explains why, so people don’t get
    upset/annoyed.



    Lastly, I have not heard a counter-proposal from either you or
    Ole on how to clean up the current state of the queue.  We're
    wasting cycles and abusing the infra by letting the queue remain
    so large and it would be wise to address that sooner rather than
    later.

    If we decide to enable it, shout loudly on the list and give folks
    a month warning before actually enable it, to touch the changes
    they intend on working on. Then enable the plugin. Then start with
    whatever nagging/reporting process from clean slate on top of the
    plugin being already active.

    To be clear: I think that there are two separate things:

    1)  having a boatload of super outdated open changes
    2) avoiding such changes piling up in the future/improving the
    review time

    The enabling of the plugin proposal solves (1), which is an
    immediate technical problem.

    Ole’s proposal seems to me to be aimed to address the (1) via (2),
    so my comment was that I disagreed that the suggested approach of
    addressing (2) is going to work, thus the suggested tweak.

    I still think it’s fine to enable the plugin (with not deleting
    the mergeable changes config), and it will solve the (1), and then
    discuss how to tackle (2).

    —a


    Thanks,
    -daw-

    On 1/28/2021 4:29 AM, Andrew 👽 Yourtchenko wrote:
    On 28 Jan 2021, at 10:10, Ole Troan<otr...@employees.org>  
<mailto:otr...@employees.org>  wrote:

    My impression is that there is a disconnect between someone putting 
something on gerrit and a vpp maintainer reviewing and contributor merging.
    Absolutely agree on that.

    As a project we certainly can do better on managing the stream of changes. 
With my release manager hat on, I have seen a non-trivial number of cases where 
the patch sits for a while, then “oh damn it’s release time”, it gets squeezed 
in last moment, with predictable consequences.

    I was thinking of having a script processing the review queue and 
generating reports for each maintainer. Then give each author a chance to get 
their code reviewed and merged.
    if the maintainers don’t look at the new changes today, why would they look 
at the reports on the changes they didn’t look at ?

    I would like to try the gentle nudge first. If we go down the abandon 
route, certainly not without sending alerts first.
    If a person is legit swamped, the robotic nags will just annoy them and 
will go into recycle bin. I kinda like the idea of nudges but to have a chance 
to help - they need to go to the mail list where the other people might jump 
in... (of course the code owners have the final say but often there can be 
basic things that can be done. Maybe even do it over the email altogether - 
there was a recent experience on the list and I think it might not be a bad 
idea to make it a more frequent occurrence...

    Then a possible sequence could be:

    T: author submits the patch without their own “-1/-2” or removed -1/-2
    T+7: the mail to vpp-dev is sent
    T+30: autoabandon plugin triggers if no activity on the patch


    —a


    So a tentative -1.

    Cheers
    Ole



    On 28 Jan 2021, at 09:19, Benoit Ganne (bganne) vialists.fd.io  <http://lists.fd.io>  
<bganne=cisco....@lists.fd.io>  <mailto:bganne=cisco....@lists.fd.io>  wrote:

    +1

    ben

    -----Original Message-----
    From:vpp-dev@lists.fd.io  <mailto:vpp-dev@lists.fd.io>  <vpp-dev@lists.fd.io>  
<mailto:vpp-dev@lists.fd.io>  On Behalf Of Dave Wallace
    Sent: mercredi 27 janvier 2021 22:50
    To:vpp-dev@lists.fd.io  <mailto:vpp-dev@lists.fd.io>
    Subject: [vpp-dev] RFC: Enabling Gerrit Auto-Abandon job on VPP master

    Folks,

    There are currently 636 open Gerrit Reviews on VPP master [0], the oldest
    being submitted on Jun 13, 2016 [1]!

    I would like to propose that the Gerrit Review Auto-Abandon job [2] to
    reduce the size of the queue to a more reasonable length. Benefits include
    (from [3]):

    ----- %< -----

    Abandoning old inactive changes has the following advantages:

       it signals change authors that changes are considered outdated

       it keeps dashboards clean

       it reduces the load on the server (for open changes the mergeability
    flag is recomputed whenever a change is merged)

    If a change is still wanted it can be restored by clicking on the Restore
    button.

    ----- %< -----

    I would like to propose the following configuration [2] for auto-abandon:

    changeCleanup.abandonAfter:                 30d
    changeCleanup.abandonIfMergeable:           default (true)
    changeCleanup.cleanupAccountPatchReview:    default (false)
    changeCleanup.abandonMessage:               default
    changeCleanup.startTime:                    Sat 00:00
    changeCleanup.interval:                     1 day

    If you are opposed to the use of Auto-abandon, please propose an
    alternative method to clean up the backlog of reviews on VPP master and
    maintain a reasonably sized queue.
    If you approve of the concept, please respond with a +1.
    If you approve of the concept but don't like the configuration, please
    respond with your preferred configuration.

    Lack of response will be interpreted as approval of the use of auto-
    abandon with the proposed configuration ;)

    Thanks,
    -daw-

    [0] dwallacelf@daw-server-2:~$ ssh -p 29418gerrit.fd.io  
<http://gerrit.fd.io>  gerrit query
    status:open project:vpp branch:master --format=JSON --no-limit | tail -1
    {"type":"stats","rowCount":636,"runTimeMilliseconds":1467,"moreChanges":fa
    lse}
    [1]https://gerrit.fd.io/r/c/vpp/+/1529  
<https://gerrit.fd.io/r/c/vpp/+/1529>
    [2]https://gerrit-review.googlesource.com/Documentation/config  
<https://gerrit-review.googlesource.com/Documentation/config>-
    gerrit.html#changeCleanup
    [3]https://gerrit-review.googlesource.com/Documentation/user-change  
<https://gerrit-review.googlesource.com/Documentation/user-change>-
    cleanup.html#auto-abandon



-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#18631): https://lists.fd.io/g/vpp-dev/message/18631
Mute This Topic: https://lists.fd.io/mt/80169540/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to