I'm confused. With your message on the 18th I thought you had changed your
mind and agreed that "suppressExceptions" was a better choice than
"ignoreExceptions" since it more accurately describes what is being done.
Ralph
On Jul 20, 2013, at 2:58 PM, Nick Williams wrote:
> The conversion from
> "handleExceptions"/"suppressExceptions"/"isExceptionSuppressed" to
> "ignoreExceptions" has been completed.
>
> I still have some work to do to make sure these are being used/abided by
> consistently and to make sure that all appenders and managers really do let
> exceptions propagate.
>
> Nick
>
> On Jul 20, 2013, at 3:57 PM, Ralph Goers wrote:
>
>> Yeah - that seems to work.
>>
>> Ralph
>>
>> On Jul 20, 2013, at 1:35 PM, Nick Williams wrote:
>>
>>> You left out the exclamation point.
>>>
>>> If value of "junk" is specified and the defaultValue is true then
>>> (!"false".equalsIgnoreCase("junk") && true) returns true.
>>>
>>> However, it should actually be (defaultValue &&
>>> !"false".equalsIgnoreCase(s)) so that it short-circuits it defaultValue is
>>> false.
>>>
>>> Nick
>>>
>>> On Jul 20, 2013, at 3:30 PM, Ralph Goers wrote:
>>>
>>>> Why does this not look right to me? If a value of "junk" is specified and
>>>> the defaultValue is true then ("false".equalsIgnoreCase("junk") && true)
>>>> return false, which is incorrect. It should just return the default value.
>>>>
>>>> Ralph
>>>>
>>>> On Jul 20, 2013, at 1:18 PM, Nick Williams wrote:
>>>>
>>>>> Correction below:
>>>>>
>>>>> On Jul 20, 2013, at 2:38 PM, Nick Williams wrote:
>>>>>
>>>>>> Finally got back to working on this. Noticed two things:
>>>>>>
>>>>>> 1) On some appenders, ignoreExceptions/suppressExceptions defaults to
>>>>>> true. On other ones it defaults to false. We should be consistent in
>>>>>> this, and IMO it should default to true. Does anyone have any objection
>>>>>> to that?
>>>>>>
>>>>>> 2) o.a.l.l.core.helpers.Booleans.parseBoolean may or may not be working
>>>>>> as expected, so I wanted to check with y'all. Here's the code:
>>>>>>
>>>>>> return Strings.isEmpty(s) ? defaultValue : Boolean.parseBoolean(s);
>>>>>>
>>>>>> Boolean.parseBoolean() doesn't have a way to specify a default value. It
>>>>>> automatically defaults to false if the value passed in is anything other
>>>>>> than "true." So, if someone passes in a non-empty value other than
>>>>>> "true" or "false", it will always return false even if defaultValue is
>>>>>> true. I propose changing it to this:
>>>>>>
>>>>>> return "true".equalsIgnoreCase(s) || defaultValue;
>>>>>
>>>>> return "true".equalsIgnoreCase(s) || (!"false".equalsIgnoreCase(s) &&
>>>>> defaultValue);
>>>>>
>>>>>>
>>>>>> Does anyone have any problem with that?
>>>>>>
>>>>>> Nick
>>>>>>
>>>>>> On Jul 18, 2013, at 8:12 PM, Gary Gregory wrote:
>>>>>>
>>>>>>> On Jul 18, 2013, at 20:28, Paul Benedict <[email protected]> wrote:
>>>>>>>
>>>>>>>> "Proper documentation" is the key phrase. :-)
>>>>>>>
>>>>>>> Yes! :)
>>>>>>>
>>>>>>> Gary
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Jul 18, 2013 at 7:25 PM, Nick Williams
>>>>>>>> <[email protected]> wrote:
>>>>>>>> Okay. Hold everything! Lol...
>>>>>>>>
>>>>>>>> I started working on this change and then realized something.
>>>>>>>> "Suppress" means "to forcibly put an end to," "restrain," or "prevent
>>>>>>>> the development, action, or expression of." However, "ignore" means
>>>>>>>> "refuse to take notice of or acknowledge; disregard intentionally" or
>>>>>>>> "fail to consider (something significant)."
>>>>>>>>
>>>>>>>> Though not guaranteed, I can see how a user would mistake the word
>>>>>>>> "ignore" to mean that exceptions aren't even logged, while "suppress"
>>>>>>>> would be more obvious to mean they aren't thrown (but also confusing
>>>>>>>> with Java suppressed exceptions as others pointed out). I don't think
>>>>>>>> it's a big deal because no matter what we do we're going to have to
>>>>>>>> properly document this field. But I just wanted to make sure everyone
>>>>>>>> had thought about this before we proceeded.
>>>>>>>>
>>>>>>>> Nick
>>>>>>>>
>>>>>>>> On Jul 18, 2013, at 6:58 PM, Nick Williams wrote:
>>>>>>>>
>>>>>>>> > Okay. I'll proceed with the change.
>>>>>>>> >
>>>>>>>> > Nick
>>>>>>>> >
>>>>>>>> > On Jul 18, 2013, at 2:08 PM, Ralph Goers wrote:
>>>>>>>> >
>>>>>>>> >> First, I appreciate having the discussion before a code change like
>>>>>>>> >> this is made. If that had been done I probably would have vetoed
>>>>>>>> >> it. But this is the ASF where everybody gets a single voice and a
>>>>>>>> >> single vote. Although I dislike this change and the effect it will
>>>>>>>> >> have on my users I won't veto it if that is what the majority wants.
>>>>>>>> >>
>>>>>>>> >> Ralph
>>>>>>>> >>
>>>>>>>> >> On Jul 18, 2013, at 11:06 AM, Nick Williams wrote:
>>>>>>>> >>
>>>>>>>> >>> Hmmm. So it sounds like we're at an impasse. Everyone except Ralph
>>>>>>>> >>> seems to agree to renaming it ignoreExceptions, bug Ralph said the
>>>>>>>> >>> below in opposition. Ralph, can you clarify a little? Are you
>>>>>>>> >>> objecting to just renaming the XML/JSON attribute (which, really,
>>>>>>>> >>> is the only thing that would break your teams' configurations)? Or
>>>>>>>> >>> are you objecting to ignoreExceptions completely? I can't tell
>>>>>>>> >>> whether you're okay with the isExceptionSuppressed method being
>>>>>>>> >>> renamed.
>>>>>>>> >>>
>>>>>>>> >>> I would just throw it out there that, while I understand that it
>>>>>>>> >>> would be inconvenient to have to modify all your configurations,
>>>>>>>> >>> this IS beta software. It is not GA yet (hopefully next month or
>>>>>>>> >>> so). Anyone who uses beta software does so with the understanding
>>>>>>>> >>> that there could be breaking changes before GA. If you didn't want
>>>>>>>> >>> to take that risk, I respectively submit that you shouldn't have
>>>>>>>> >>> used beta software in production. I'm not saying, "You're wrong."
>>>>>>>> >>> I'm just questioning the motives behind your opposition. In short:
>>>>>>>> >>>
>>>>>>>> >>> If we all agree that ignoreExceptions is a better name that
>>>>>>>> >>> suppressExceptions (inconvenience aside), now is the time to
>>>>>>>> >>> change it. We can't after GA.
>>>>>>>> >>>
>>>>>>>> >>> Now I'm not sure how to proceed. :-P
>>>>>>>> >>>
>>>>>>>> >>> Nick
>>>>>>>> >>>
>>>>>>>> >>> On Jul 18, 2013, at 1:02 AM, Ralph Goers wrote:
>>>>>>>> >>>
>>>>>>>> >>>> I do not have a problem with renaming handleExceptions to
>>>>>>>> >>>> exceptionSuppressed. I do have a problem with renaming
>>>>>>>> >>>> supressExceptions to ignoreExceptions, primarily because I have a
>>>>>>>> >>>> bunch of teams using Log4j 2 in production and they would have to
>>>>>>>> >>>> modify their configurations when they upgrade. Furthermore, I
>>>>>>>> >>>> can't in my wildest dreams imagine anyone getting confused over
>>>>>>>> >>>> this parameter and suppressed Throwables.
>>>>>>>> >>>>
>>>>>>>> >>>> FWIW - handleExceptions means that the Appender "handles" the
>>>>>>>> >>>> exception (i.e. it is suppressed). I don't recall why the
>>>>>>>> >>>> variables don't match - I think I might have originally exposed
>>>>>>>> >>>> "handleExceptions" and found that to be ambiguous and renamed the
>>>>>>>> >>>> config param but not the internal variable.
>>>>>>>> >>>>
>>>>>>>> >>>> Ralph
>>>>>>>> >>>>
>>>>>>>> >>>> On Jul 17, 2013, at 2:42 PM, Nick Williams wrote:
>>>>>>>> >>>>
>>>>>>>> >>>>> Appender specifies a method, isExceptionSuppressed(), which
>>>>>>>> >>>>> indicates whether exceptions thrown while appending events
>>>>>>>> >>>>> should be suppressed (logged instead of re-thrown).
>>>>>>>> >>>>>
>>>>>>>> >>>>> AbstractAppender implements this method with a private
>>>>>>>> >>>>> handleExceptions field and a handleExceptions constructor
>>>>>>>> >>>>> argument. isExceptionSuppressed() returns handleExceptions (so,
>>>>>>>> >>>>> supposedly, "handle exceptions" means "take care of exceptions
>>>>>>>> >>>>> instead of the user having to take care of exceptions").
>>>>>>>> >>>>>
>>>>>>>> >>>>> Everybody that extends AbstractAppender uses the same
>>>>>>>> >>>>> handleExceptions constructor argument. They all define a
>>>>>>>> >>>>> suppressExceptions XML attribute that is assigned to the
>>>>>>>> >>>>> handleExceptions constructor argument in the static plugin
>>>>>>>> >>>>> factory method.
>>>>>>>> >>>>>
>>>>>>>> >>>>> This is all very confusing to me. I just realize that I have
>>>>>>>> >>>>> misunderstood "handleExceptions" this whole time in the database
>>>>>>>> >>>>> appenders and have assumed it was the opposite of
>>>>>>>> >>>>> isExceptionSuppressed() / suppressExceptions (and, thus, have
>>>>>>>> >>>>> written incorrect code).
>>>>>>>> >>>>>
>>>>>>>> >>>>> Does anyone have a problem with me renaming handleExceptions to
>>>>>>>> >>>>> exceptionSuppressed (to match the JavaBean isExceptionSuppressed
>>>>>>>> >>>>> method) to make this less confusing?
>>>>>>>> >>>>>
>>>>>>>> >>>>> Nick
>>>>>>>> >>>>> ---------------------------------------------------------------------
>>>>>>>> >>>>> To unsubscribe, e-mail: [email protected]
>>>>>>>> >>>>> For additional commands, e-mail:
>>>>>>>> >>>>> [email protected]
>>>>>>>> >>>>>
>>>>>>>> >>>>
>>>>>>>> >>>>
>>>>>>>> >>>> ---------------------------------------------------------------------
>>>>>>>> >>>> To unsubscribe, e-mail: [email protected]
>>>>>>>> >>>> For additional commands, e-mail: [email protected]
>>>>>>>> >>>>
>>>>>>>> >>>
>>>>>>>> >>>
>>>>>>>> >>> ---------------------------------------------------------------------
>>>>>>>> >>> To unsubscribe, e-mail: [email protected]
>>>>>>>> >>> For additional commands, e-mail: [email protected]
>>>>>>>> >>>
>>>>>>>> >>
>>>>>>>> >>
>>>>>>>> >> ---------------------------------------------------------------------
>>>>>>>> >> To unsubscribe, e-mail: [email protected]
>>>>>>>> >> For additional commands, e-mail: [email protected]
>>>>>>>> >>
>>>>>>>> >
>>>>>>>>
>>>>>>>>
>>>>>>>> ---------------------------------------------------------------------
>>>>>>>> To unsubscribe, e-mail: [email protected]
>>>>>>>> For additional commands, e-mail: [email protected]
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Cheers,
>>>>>>>> Paul
>>>>>>
>>>>>
>>>>
>>>
>>
>