What I don’t understand is that ThrowableProxy seems to be doing a whole bunch 
of stuff in the constructor. I would think a lot of that could be deferred 
until the Throwable is being rendered.

Ralph

> On Aug 9, 2018, at 8:10 AM, Carter Kozak <c4kof...@gmail.com> wrote:
> 
> The piece I'd like to avoid is ThrowableProxy.loadClass invocations,
> which can be expensive depending on the ClassLoader implementation.
> The ThrowablePatternConverter implementations all fall back to the
> default implementation which operates directly on a Throwable rather
> than the proxy object.
> 
> I would prefer to make ThrowableProxy work better rather than
> disabling it entirely, which would open the flood gates for issues
> with the Jackson and Serializable layouts, though the counterargument
> is that without loading classes, there is no additional information
> provided by ThrowableProxy over a Throwable.
> 
> I will take a look at flagging ThrowableProxy class loading instead of
> disabling ThrowableProxy entirely when I have a moment.
> 
> Thanks,
> -ck
> 
> On Thu, Aug 9, 2018 at 1:36 AM, Ralph Goers <ralph.go...@dslextreme.com> 
> wrote:
>> What is the purpose of disabling ThrowableProxy? All the throwable pattern 
>> converters rely on it.
>> 
>> Ralph
>> 
>>> On Aug 8, 2018, at 8:34 AM, Carter Kozak <cko...@apache.org> wrote:
>>> 
>>> I'm curious what you would think of a system property to disable
>>> ThrowableProxy creation?
>>> My initial preference was to avoid this type of flag and make the
>>> common case cleaner, however
>>> without providing a mechanism to disable the functionality that
>>> differentiates it from Throwable
>>> I'm not sure that's feasible.
>>> 
>>> An alternative approach may be to allow custom implementations of the
>>> logic surrounding
>>> ThrowableProxy.toCacheEntry which could potentially disable classloader 
>>> lookups,
>>> or implement something like the request in github pull/195. This extension 
>>> point
>>> would make ThrowableProxy refactors significantly more difficult in the 
>>> future.
>>> 
>>> -ck
>>> 
>>> On Tue, Aug 7, 2018 at 11:10 PM, Carter Kozak <c4kof...@gmail.com> wrote:
>>>> My guess is that StackWalker provides additional information beyond
>>>> the array of classes
>>>> supplied by the SecurityManager, though I've not done a thorough analysis 
>>>> yet.
>>>> 
>>>> A quick targeted benchmark of our current implementations:
>>>> 
>>>> Benchmark                                               Mode  Cnt
>>>> Score        Error  Units
>>>> StackTraceBenchmark.defaultJava8        thrpt    3  113965.921 ±
>>>> 119706.986  ops/s
>>>> StackTraceBenchmark.securityManager  thrpt    3  788004.237 ±  82578.567  
>>>> ops/s
>>>> StackTraceBenchmark.stackWalker         thrpt    3  182902.031 ±
>>>> 39018.395  ops/s
>>>> 
>>>> 
>>>> -ck
>>>> 
>>>> On Tue, Aug 7, 2018 at 7:20 PM, Ralph Goers <ralph.go...@dslextreme.com> 
>>>> wrote:
>>>>> I have to wonder why using the security manager is faster than using 
>>>>> StackWalker. StackWalker was created just for this purpose. Is the way it 
>>>>> is implemented the problem?
>>>>> 
>>>>> Ralph
>>>>> 
>>>>> 
>>>>>> On Aug 7, 2018, at 1:34 PM, cakofony <g...@git.apache.org> wrote:
>>>>>> 
>>>>>> GitHub user cakofony opened a pull request:
>>>>>> 
>>>>>>  https://github.com/apache/logging-log4j2/pull/202
>>>>>> 
>>>>>>  [LOG4J2-2391] Improve ThrowableProxy performace on java 9+
>>>>>> 
>>>>>>  Share the SecurityManager implementation of getCurrentStackTrace
>>>>>>  with the java 9 implementation.
>>>>>> 
>>>>>> You can merge this pull request into a Git repository by running:
>>>>>> 
>>>>>>  $ git pull https://github.com/cakofony/logging-log4j2 
>>>>>> java9_getcurrentstacktrace
>>>>>> 
>>>>>> Alternatively you can review and apply these changes as the patch at:
>>>>>> 
>>>>>>  https://github.com/apache/logging-log4j2/pull/202.patch
>>>>>> 
>>>>>> To close this pull request, make a commit to your master/trunk branch
>>>>>> with (at least) the following in the commit message:
>>>>>> 
>>>>>>  This closes #202
>>>>>> 
>>>>>> ----
>>>>>> commit 52bf8569e8e9881d0999156c31d99b99f28e6e73
>>>>>> Author: Carter Kozak <ckozak@...>
>>>>>> Date:   2018-08-07T20:27:10Z
>>>>>> 
>>>>>>  [LOG4J2-2391] Improve ThrowableProxy performace on java 9+
>>>>>> 
>>>>>>  Share the SecurityManager implementation of getCurrentStackTrace
>>>>>>  with the java 9 implementation.
>>>>>> 
>>>>>> ----
>>>>>> 
>>>>>> 
>>>>>> ---
>>>>>> 
>>>>> 
>>>>> 
>>> 
>> 
>> 
> 


Reply via email to