<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Maybe a round-table at the dev meeting?  which might collect more of the relevant folks.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Among my immediate crowd, it’s a cause for (ironic) concern if no bot fail-mail shows up (it’s that rare).  Did the commit actually go in?  Did I accidentally push a development branch?<o:p></o:p></p>
<p class="MsoNormal">--paulr<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> llvm-dev <llvm-dev-bounces@lists.llvm.org> <b>On Behalf Of
</b>David Blaikie via llvm-dev<br>
<b>Sent:</b> Thursday, September 9, 2021 6:39 PM<br>
<b>To:</b> Philip Reames <listmail@philipreames.com><br>
<b>Cc:</b> llvm-dev@lists.llvm.org<br>
<b>Subject:</b> Re: [llvm-dev] False positive notifications around commit notifications<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">I think most of these discussions are readily agreed upon, but that sending a broad email like this is unlikely to reach the right people/result in action.<br>
<br>
At least for the try bots stuff - finding the owner of that system, and seeing if it can be made to not put that notice in the emails.<br>
<br>
Yes, the buildbot configuration is intended not to send mail on already-red. If you're seeing those, specifically looking at which bot/configuration, and fixing the configuration - that shouldn't be a per-bot issue, but a buildbot server configuration that's
 broken in some way.<br>
<br>
Slow builders - yeah, I'm up for having an upper bound on size of a blame list. I wonder if that could be implemented in the buildbot config itself - if the blame list is over a certain size, just don't send mail. That way we don't even have to classify bots
 - move them between groups if they become slower/faster - makes it easier for bot owners to fix the issue themselves - allocate more compute resources (faster system, or multiple systems running in parallel) and it'll naturally start sending fail-mail. But
 that does still leave the duplicate and very delayed results - slow builder with lots of machines dedicated could have small blame lists but still produce an answer hours later, possibly just redundant with some faster builder - hence a staged system would
 be much nicer instead of or in addition to.<br>
<br>
A staged building system would be great, but requires a bunch of work to build that no one's signed up to do as yet. I don't think anyone would object to such a thing being implemented. (Apple internally had/has a system that uses a staged build system that
 reused the build product of earlier builds, even - so like a baseline builder, then other builders that can consume that build to run stage 2 and another that consume the build to run test-suite, etc - so less duplicate, more throughput, and less noise - was
 hoping that's what the greendragon stuff would become, but doesn't seem like it has)<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Thu, Sep 9, 2021 at 3:18 PM Philip Reames via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<p>I've been noticing a trend where there is more and more false positive email notifications sent out on valid commits.  This is getting really problematic as real signal is being lost in the noise.  I've had several cases in the last few weeks where I did
 not see a "real" failure notice because it was buried in a bunch of false positives.  <o:p></o:p></p>
<p>Let me run through a few sources of what I consider false positives, and suggest a couple things we could do to clean these up.  Note that the recommendations here are entirely independent and we can adopt any subset.<o:p></o:p></p>
<p><b>Slow Try Bots</b><o:p></o:p></p>
<p>ex: "This revision was landed with ongoing or failed builds." on <a href="https://urldefense.com/v3/__https:/reviews.llvm.org/D109091__;!!JmoZiZGBv3RvKRSx!pmMyct2w-GFCS9b-qJdhTkJgVG63ucvKJbrflg5u3Ch_DuKKx7uXHxRAInEg4okr_w$" target="_blank">
https://reviews.llvm.org/D109091</a><o:p></o:p></p>
<p>Someone - I'm not really sure who - enabled builds for all reviews, and this notice on landed commits.  Given it's utterly routine to make a last few style fixes before landing an LGTMed change, I consider this notice complete noise.  In practice, almost
 review gets tagged this way.  To be clear, there is value in being told about changes which don't build.  The false positive part is only around the "ongoing" builds.<o:p></o:p></p>
<p>Recommendation: Disable this message for the "ongoing" build case, and if we can't, disable them entirely. 
<o:p></o:p></p>
<p><b>Flaky Builders</b><o:p></o:p></p>
<p>ex: <a href="https://urldefense.com/v3/__https:/lab.llvm.org/buildbot/*/builders/68/builds/18250__;Iw!!JmoZiZGBv3RvKRSx!pmMyct2w-GFCS9b-qJdhTkJgVG63ucvKJbrflg5u3Ch_DuKKx7uXHxRAInHRiju8qQ$" target="_blank">
https://lab.llvm.org/buildbot/#/builders/68/builds/18250</a><o:p></o:p></p>
<p>We have many build bots which are not entirely stable.  It's gotten to the point where I *expect* failure notifications on literally every change I land.  I've been trying to reach out to individual build bot owners to get issues resolved, and to their credit,
 most owners have been very responsive.  However, we have enough builders that the situation isn't getting meaningful better.<o:p></o:p></p>
<p>Recommendation: Introduce specific "test commits" whose only purpose is to run the CI infrastructure.  Any builder which notifies of failure on such a commit (and only said commit) is disabled without discussion until human action is taken by the bot owner
 to re-enable.  The idea here is to a) automate the process, and b) shift the responsibility of action to the bot owner for any flaky bot. 
<o:p></o:p></p>
<p>Note: By "disabled", I specifically mean that *notification* is disabled.  Leaving it in the waterfall view is fine, as long as we're not sending out email about it. 
<o:p></o:p></p>
<p>Aside: It's really tempting to attempt to separate builders which are "still failing" (e.g. a rare configuration which has been broken for a few days) from "flaky" ones.  I'd argue any bot notifying on a "still failing" case is buggy, and thus it's fine
 to treat them the same as a "flaky" bot.  <o:p></o:p></p>
<p><b>Slow Builders and Redundant Notices</b><o:p></o:p></p>
<p>ex: <a href="https://urldefense.com/v3/__https:/lab.llvm.org/buildbot*builders/67/builds/4128__;Iw!!JmoZiZGBv3RvKRSx!pmMyct2w-GFCS9b-qJdhTkJgVG63ucvKJbrflg5u3Ch_DuKKx7uXHxRAInE5BfrYxQ$" target="_blank">
https://lab.llvm.org/buildbot#builders/67/builds/4128</a><o:p></o:p></p>
<p>Occasionally, we have a bad commit land which breaks every (or nearly every) builder.  That happens.  If you happen to land a change just before or after it, you then get on the blame list for every slow running builder we have (since they tend to have large
 commit windows) if they happen to cycle before the fix is committed.  This is particularly annoying since the root issue is likely fixed quickly, but due to cycle times on the builders, you may be getting emails for 24 hours to come. 
<o:p></o:p></p>
<p>Recommendation: Introduce a new requirement for "slow" builders (say cycle time of > 30 minutes) either a) have a maximum commit window of ~15 commits, or b) use a staged builder model.  Personally, I'd prefer the staged model, but the max commit window
 at least helps to limit the damage.  <o:p></o:p></p>
<p>By "staged builder model", I mean that slow builders only build points in the history which have already been successfully build by one of the fast builders.  This eliminates redundant build failures, at the cost of delaying the slow builder slightly.  As
 long as the slow builder uses the "last good commit" as opposed to waiting until the current fast builder finishes, the delay should be very minimal for most commits. 
<o:p></o:p></p>
<p>Philip<o:p></o:p></p>
</div>
<p class="MsoNormal">_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://urldefense.com/v3/__https:/lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev__;!!JmoZiZGBv3RvKRSx!pmMyct2w-GFCS9b-qJdhTkJgVG63ucvKJbrflg5u3Ch_DuKKx7uXHxRAInFLXedwOw$" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><o:p></o:p></p>
</blockquote>
</div>
</div>
</div>
</body>
</html>