<div dir="ltr">As it has been pointed out previously in this thread debugging gate failures is mostly about chasing race conditions, which in some cases involve the most disparate interactions between Openstack services [1].<div>
<div><br></div><div>Finding the root cause of these races is a mix of knowledge, pragmatism, and luck. Having more people looking at gate failures can only be a good thing.</div><div>While little can be done to transfer luck, good things can be written regarding pragmatism and knowledge.</div>
<div><br></div><div>Knowledge is about knowing the tools, the infrastructure, and ultimately the dynamics of the stuff that's being tested. This involves understanding the zuul layout, devstack-gate, tempest, and most importantly logstash (in my opinion). Unfortunately it's difficult to do this without being sufficiently expert of the matter being tested.</div>
<div>For instance debugging a SSH failure with neutron involves knowledge of the internals of neutron's l3 agent, ovs agent, metadata agent, the nova/neutron interface, the nova/neutron notification system, nova's network info instance cache and so on. </div>
<div><br></div><div>Pragmatism is about writing down and sharing the process followed for triaging gate failures, especially when it comes to analysing openstack's logs. Different people might be using different processes, and sharing them can only be good.</div>
<div><br></div><div>To this aim the Neutron community has tried to put these things in writing in this unfinished effort [2]. Hopefully there could be a wiki page (or a set of pages) like this not limited to neutron only but to the whole set of projects tested in the integrated gate.</div>
<div><br></div><div>This effort can also constitute a basis for improving the process. As an example, event correlation in logs, ability of validating hypothesis by correlating traces for failures manifestation with potential traces for root causes are two areas with room for improvement.</div>
<div><div><br></div><div>Salvatore</div><div><br></div><div>[1] <a href="https://bugs.launchpad.net/neutron/+bug/1273386">https://bugs.launchpad.net/neutron/+bug/1273386</a><br></div></div></div><div>[2] <a href="https://wiki.openstack.org/wiki/NeutronGateFailureTriage">https://wiki.openstack.org/wiki/NeutronGateFailureTriage</a></div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On 28 August 2014 00:32, Matthew Treinish <span dir="ltr"><<a href="mailto:mtreinish@kortar.org" target="_blank">mtreinish@kortar.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Wed, Aug 27, 2014 at 05:47:09PM -0400, Doug Hellmann wrote:<br>
><br>
> On Aug 27, 2014, at 5:27 PM, Doug Hellmann <<a href="mailto:doug@doughellmann.com">doug@doughellmann.com</a>> wrote:<br>
><br>
> ><br>
> > On Aug 27, 2014, at 2:54 PM, Sean Dague <<a href="mailto:sean@dague.net">sean@dague.net</a>> wrote:<br>
> ><br>
> >> Note: thread intentionally broken, this is really a different topic.<br>
> >><br>
> >> On 08/27/2014 02:30 PM, Doug Hellmann wrote:><br>
> >>> On Aug 27, 2014, at 1:30 PM, Chris Dent <<a href="mailto:chdent@redhat.com">chdent@redhat.com</a>> wrote:<br>
> >>><br>
> >>>> On Wed, 27 Aug 2014, Doug Hellmann wrote:<br>
> >>>><br>
> >>>>> I have found it immensely helpful, for example, to have a written set<br>
> >>>>> of the steps involved in creating a new library, from importing the<br>
> >>>>> git repo all the way through to making it available to other projects.<br>
> >>>>> Without those instructions, it would have been much harder to split up<br>
> >>>>> the work. The team would have had to train each other by word of<br>
> >>>>> mouth, and we would have had constant issues with inconsistent<br>
> >>>>> approaches triggering different failures. The time we spent building<br>
> >>>>> and verifying the instructions has paid off to the extent that we even<br>
> >>>>> had one developer not on the core team handle a graduation for us.<br>
> >>>><br>
> >>>> +many more for the relatively simple act of just writing stuff down<br>
> >>><br>
> >>> "Write it down.” is my theme for Kilo.<br>
> >><br>
> >> I definitely get the sentiment. "Write it down" is also hard when you<br>
> >> are talking about things that do change around quite a bit. OpenStack as<br>
> >> a whole sees 250 - 500 changes a week, so the interaction pattern moves<br>
> >> around enough that it's really easy to have *very* stale information<br>
> >> written down. Stale information is even more dangerous than no<br>
> >> information some times, as it takes people down very wrong paths.<br>
> >><br>
> >> I think we break down on communication when we get into a conversation<br>
> >> of "I want to learn gate debugging" because I don't quite know what that<br>
> >> means, or where the starting point of understanding is. So those<br>
> >> intentions are well meaning, but tend to stall. The reality was there<br>
> >> was no road map for those of us that dive in, it's just understanding<br>
> >> how OpenStack holds together as a whole and where some of the high risk<br>
> >> parts are. And a lot of that comes with days staring at code and logs<br>
> >> until patterns emerge.<br>
> >><br>
> >> Maybe if we can get smaller more targeted questions, we can help folks<br>
> >> better? I'm personally a big fan of answering the targeted questions<br>
> >> because then I also know that the time spent exposing that information<br>
> >> was directly useful.<br>
> >><br>
> >> I'm more than happy to mentor folks. But I just end up finding the "I<br>
> >> want to learn" at the generic level something that's hard to grasp onto<br>
> >> or figure out how we turn it into action. I'd love to hear more ideas<br>
> >> from folks about ways we might do that better.<br>
> ><br>
> > You and a few others have developed an expertise in this important skill. I am so far away from that level of expertise that I don’t know the questions to ask. More often than not I start with the console log, find something that looks significant, spend an hour or so tracking it down, and then have someone tell me that it is a red herring and the issue is really some other thing that they figured out very quickly by looking at a file I never got to.<br>

> ><br>
> > I guess what I’m looking for is some help with the patterns. What made you think to look in one log file versus another? Some of these jobs save a zillion little files, which ones are actually useful? What tools are you using to correlate log entries across all of those files? Are you doing it by hand? Is logstash useful for that, or is that more useful for finding multiple occurrences of the same issue?<br>

> ><br>
> > I realize there’s not a way to write a how-to that will live forever. Maybe one way to deal with that is to write up the research done on bugs soon after they are solved, and publish that to the mailing list. Even the retrospective view is useful because we can all learn from it without having to live through it. The mailing list is a fairly ephemeral medium, and something very old in the archives is understood to have a good chance of being out of date so we don’t have to keep adding disclaimers.<br>

><br>
> Matt’s blog post [1] is an example of the sort of thing I think would be helpful. Obviously one post isn’t going to make the reader an expert, but over time a few of these will impart some useful knowledge.<br>
><br>
> Doug<br>
><br>
> [1] <a href="http://blog.kortar.org/?p=52&draftsforfriends=cTT3WsXqsH66eEt6uoi9rQaL2vGc8Vde" target="_blank">http://blog.kortar.org/?p=52&draftsforfriends=cTT3WsXqsH66eEt6uoi9rQaL2vGc8Vde</a><br>
<br>
</div></div>So that was just an expiring link (which shouldn't be valid anymore) to the<br>
draft which I generated to get some initial feedback before I posted it. The<br>
permanent link to the post is here:<br>
<br>
<a href="http://blog.kortar.org/?p=52" target="_blank">http://blog.kortar.org/?p=52</a><br>
<br>
<br>
-Matt Treinish<br>
<br>_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br></blockquote></div><br></div>