> On May 16, 2022, at 10:49 AM, David Blevins <[email protected]> wrote: > > First, thanks for merging that PR. I really appreciate it. > >> On May 15, 2022, at 11:55 PM, GitBox <[email protected]> wrote: >> >> >> rmannibucau commented on PR #91: >> URL: https://github.com/apache/johnzon/pull/91#issuecomment-1127292848 >> >> @dblevins FYI here is a test showing the comment I made in the PR to >> explain why current exception handling is not yet release friendly/ready >> (and why I spoke of mutable exception as an option - note that I don't care >> instantiating 3-4 instances but I care about instantiating 2 stack traces >> since they are often very costly in apps so a MapperExceptionBuilder which >> would be a RuntimeException we catch internally and `.build()` to a >> MapperException after having saved the context in the `Mapper` instance or >> alike would perfectly work if you don't want to make `MapperException` >> mutable on user side - which is a very fair point): >> https://github.com/apache/johnzon/commit/c2bf6945c2ca43befa93e15d821e0dee439aa8de#diff-9a970ccae72ea07cf4f226b1066a425fda9d97f48e06f1bc6f12079da28ca2f4R38 > > Can you help me understand the issue with wrapping exceptions when they are a > subtype of MapperException? > > If you really wanted to rewrite the code so it uses some sort of mutable > message, I'd say I wouldn't recommend it, but I wouldn't stand in the way > either. I'm just not clear on what issue we're solving.
For my own curiosity I did a test of an exception 100 stacks deep and than wrapped it up to 4 times at about 20 stacks apart. Speedwise, I wasn't able to see a difference. Even with 1 million exceptions, the numbers were randomly going up and down due to hotspotting. I took heap dumps of 10000 thrown exceptions, here's that data: # element bytes arrays bytes bytes 0 82,390,000 8,800,048 9,119 1 87,780,000 9,600,048 9,738 2 108,570,000 12,000,048 12,057 3 144,760,000 16,000,048 16,076 4 196,350,000 21,600,048 21,795 The difference between wrapping 0 times or 4 times is about 12k if there are 100 elements. This seems minuscule compared to the work we did with Snippet and optimizing buffers. In practice traces aren't that big and we've already got some wrapping, so eliminating 1 layer is maybe going to trim out 1k tops. We're both exceptionally smart (pun always intended), there are many other things we could collaborate on that have more impact. IMO, this one isn't worth our time. -David
smime.p7s
Description: S/MIME cryptographic signature
