In some ways I agree with Owen - it's always better to have more information about a problem.  I can recall seeing blank error messages or "null" on many occasions.

In other ways I agree with Dan and Anthony that this needs to not be a global search&replace, but I think that's mostly because our alert system is intertwined with our logging system.  An operator wouldn't know what do make of "UnknownHostException" in an alert but someone doing forensic analysis might want to see that exception name in a log file.

On 5/28/19 10:03 AM, Anthony Baker wrote:
In the example you provided, I don’t agree that adding the exception class name 
creates a better user experience.

Anthony


On May 25, 2019, at 6:39 PM, Owen Nichols <onich...@pivotal.io> wrote:

Here’s an example of a message that was logged before Jack’s change:

l192.168.99.1: nodename nor servname provided, or not known

Here’s what it will look like now with .toString() instead of .getMessage():

java.net.UnknownHostException: l192.168.99.1: nodename nor servname provided, 
or not known


I cannot think of a single good reason to ever print an exception’s message stripped 
of all context.  As Jack noted, many exceptions don’t even have a message; the key 
information is the class of the exception itself.  Even if you aren’t catching 
Exception but rather some very specific subclass, code should never make assumptions 
about the text of an exception (see PR#3616 
<https://github.com/apache/geode/pull/3616> for a recent example).


@jinmei There is no built-in method in java to capture the entire stacktrace as 
a string.  Exception::toString() just concatenates the exception class name and 
message (i.e. the first line only of a full stacktrace)


On May 24, 2019, at 3:37 PM, Dan Smith <dsm...@pivotal.io> wrote:

I think the right thing to do in those 100+ cases may be different in each
case, a blanket search and replace might not be the best idea.

-Dan



On Fri, May 24, 2019 at 3:05 PM Jinmei Liao <jil...@pivotal.io> wrote:

does exception.toString() print out the entire stack trace? If so, I don't
think we should use that to replace exception.getMessage().

On Fri, May 24, 2019 at 1:18 PM Jack Weissburg <jweissb...@pivotal.io>
wrote:

Hi All,

Owen and I investigated a strange error message caused because Geode
previously handled an error exception with exception.getMessage() instead
of
exception.toString().

The issue is that the exception message from exception.getMessage() could
be unhelpful or empty. Instead, we should return the whole exception via
exception.toString().

exception.getMessage()is used widely throughout the Geode code base (100+
times) and could be prone to cause more issues similar to
https://issues.apache.org/jira/browse/GEODE-6796
I would like to change the remaining instances of
exception.getMessage()to
avoid future issues of this variety.

Thoughts? Comments?

Best,
Jack Weissburg


--
Cheers

Jinmei

Reply via email to