On 10/23/2013 05:08 PM, Rochelle.Grober wrote:

John Griffith wrote:

On Wed, Oct 23, 2013 at 8:47 AM, Sean Dague <s...@dague.net <mailto:s...@dague.net>> wrote:

On 10/23/2013 10:40 AM, John Griffith wrote:




    On Sun, Oct 20, 2013 at 7:38 AM, Sean Dague <s...@dague.net
    <mailto:s...@dague.net>

    <mailto:s...@dague.net <mailto:s...@dague.net>>> wrote:

        Dave Kranz has been building a system so that we can ensure that
        during a Tempest run services don't spew ERRORs in the logs.
        Eventually, we're going to gate on this, because there is nothing
        that Tempest does to the system that should cause any OpenStack
        service to ERROR or stack trace (Errors should actually be
        exceptional events that something is wrong with the system, not
        regular events).


    So I have to disagree with the approach being taken here.
     Particularly
    in the case of Cinder and the negative tests that are in place.
     When I
    read this last week I assumed you actually meant that "Exceptions"
    were
    exceptional and nothing in Tempest should cause Exceptions.  It turns
    out you apparently did mean Errors.  I completely disagree here,
    Errors
    happen, some are recovered, some are expected by the tests etc.
     Having
    a policy and especially a gate that says NO ERROR MESSAGE in logs
    makes
    absolutely no sense to me.

    Something like NO TRACE/EXCEPTION MESSAGE in logs I can agree
    with, but
    this makes no sense to me.  By the way, here's a perfect example:
    https://bugs.launchpad.net/cinder/+bug/1243485

    As long as we have Tempest tests that do things like "show
    non-existent
    volume" you're going to get an Error message and I think that you
    should
    quite frankly.


Ok, I guess that's where we probably need to clarify what "Not Found" is. Because "Not Found" to me seems like it should be a request at INFO level, not ERROR.


    ERROR from an admin perspective should really be something that
    would suitable for sending an alert to an administrator for them
    to come and fix the cloud.

    From my perspective as someone who has done Ops in the past, a
    "Volume Not Found" can be either info or an error.  It all depends
    on the context.  That said, we need to be able to test ERROR
    conditions and ensure that they report properly as ERROR, else the
    poor Ops folks will always be on the spot for not knowing that
there is a problem. A volume that has gone missing is a problem. Ops would like an immediate report. They would trigger on the
    ERROR statement in the log.  On the other hand, if someone/thing
     fatfingers an input and requests something that has never
    existed, then that's just info.

It is not just a case of fatfingers. Some of the delete apis are asynchronous and the only way to know that a delete finished is to check if the object still exists. Tempest does such checks to manage resource usage, even if there were no negative tests. The logs are not full of ERRORs because almost all of our apis, including nova, do not log an ERROR when returning 404.

I think John's point is that it can be hard or impossible to tell if an object is not found because it truly no longer exists (or never existed), or if there is something wrong with the system and the object really exists but is not being found. But I would argue that even if this is true we cannot alert the operator every time some user checks to see if an object is still there. So there has to be some "thing" that gets put in the log which says "there is a problem with the system, either a bug or ran out of disk or something". The appearance of that thing in the log is what an alert should be triggered on, and what should fail a gate job. That is pretty close to what ERROR is being used for now.

    We need to be able to test for correctness of errors and process
logs with errors in them as part of the test verification. Perhaps a switch in the test that indicates log needs post
    processing, or a way to redirect the log during a specific error
    test, or some such?  The question is, how do we keep test system
    logs clean of ERRORs and still test system logs for intentionally
    triggered ERRORs?


    --Rocky

We might be able to do that in our test framework, but it would not help operators. IMO the least of evils here by far is to log events associated with an api call that returns 4xx in a way that is distinguishable from how we log when we detect a system failure of some sort.

 -David



_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to