Dan Hecht has posted comments on this change.

Change subject: IMPALA-5198: Error messages are sometimes dropped before 
reaching client
......................................................................


Patch Set 4:

> > > > (1 comment)
 > >
 > > > We have an error_log, which is different from error messages,
 > > which
 > > > is different from error details. There is a lot of overlap
 > > between
 > > > these which results in quite some confusion.
 > > >
 > > > The error_log is populated when we call LogError(). The error
 > > > message is the error associated with a status error. The error
 > > > details are extra error messages that we attach to a status.
 > > >
 > >
 > > Note that the error_log is really more like a warning log. i.e.
 > > these "errors" don't necessarily cause query execution to abort.
 > >
 > That's not always the case. In some places we add actual errors to
 > the error_log like here:
 > https://github.com/apache/incubator-impala/blob/master/be/src/runtime/plan-fragment-executor.cc#L343
 > 

Right, but we should always bubble up those kinds of errors as well.  The point 
is that the converse is not true -- i.e. an error does not necessarily show up 
in the error log.

 > > > Cumulatively, all tests together end up relying on all 3 of
 > these
 > > > being returned. Before this patch, the error_log was never
 > being
 > > > printed, but due to the overlap with the error message from the
 > > > status, all the tests passed. Now, that we print the error_log
 > > with
 > > > this patch, a lot of errors get printed twice, which looks
 > ugly.
 > > >
 > >
 > > Where does this patch cause the error log to be printed? And what
 > > do you mean by "printed"?
 > >
 > Printed meaning, returned to the client, so it prints on the
 > client's end (impala-shell)

The main error status should be returned via GetOperationStatus(), not the 
error log.

 > 
 > > Also, concerning the original issue, in what cases are error
 > > message being dropped?
 > 
 > When we unpack messages from the TStatus object into a Status
 > object, we don't copy the original ErrorMsg::message_ back to the
 > new message_, instead we put everything in details_ causing the
 > message not to be printed (returned to the client), because
 > GetErrorLog() only looks at ErrorMsg::message_ and not details_.

But GetOperationStatus() includes both, right?

So, I guess what you're saying is that the error_log can drop some messages? 
But those messages should travel back to the coordinator as part of the 
error_log in TReportExecStatusParams.  The one that gets returned as a TStatus 
should end up as *the* query status (i.e. GetOperationStatus()).  (And only 
because Beeswax doesn't really have this, I think we overload get_log() to 
include the ultimate query_status()).

-- 
To view, visit http://gerrit.cloudera.org:8080/6627
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I5d9d63610eb0d2acae3a9303ce46e1410727ce87
Gerrit-PatchSet: 4
Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-Owner: Sailesh Mukil <sail...@cloudera.com>
Gerrit-Reviewer: Dan Hecht <dhe...@cloudera.com>
Gerrit-Reviewer: Matthew Jacobs <m...@cloudera.com>
Gerrit-Reviewer: Sailesh Mukil <sail...@cloudera.com>
Gerrit-Reviewer: Tim Armstrong <tarmstr...@cloudera.com>
Gerrit-HasComments: No

Reply via email to