I think you're right, that one should not leak. On Thu, Mar 10, 2016 at 2:40 AM, Matt Sicker <boa...@gmail.com> wrote:
> I know it's Java 1.8+, but does ThreadLocal.withInitial(Supplier<S>) > prevent that memory leak? They use their own JDK class to subclass > ThreadLocal, so that shouldn't leak. > > On 8 March 2016 at 22:43, Remko Popma <remko.po...@gmail.com> wrote: > >> ThreadLocals containing JDK classes (StringBuilder, etc) are not a >> problem. Their classloader is the system classloader, not the web app >> classloader, so these ThreadLocals do not have a reference to the web app >> classes and do not prevent web app classes from being garbage collected. >> >> This idiom is safe: >> >> class SafeClass { >> // The type of this field is java.lang.ThreadLocal, and >> // both the key (ThreadLocal) and the value (StringBuilder) are JDK >> classes. // This idiom is safe and will not cause memory leaks in web >> apps. >> static ThreadLocal<StringBuilder> safe = new >> ThreadLocal<StringBuilder>(); >> >> private StringBuilder getThreadLocalStringBuilder() { >> StringBuilder value = safe.get(); >> if (value == null) { >> value = new StringBuilder(1024); >> safe.set(value); >> } >> return value; >> } >> } >> >> However, as soon as we create an anonymous subclass like below we cause >> memory leaks again: >> >> class MemoryLeakingClass { >> // The type of this field is MemoryLeakingClass$1, an anonymous subclass >> of java.lang.ThreadLocal! >> // In a web app, the classloader of this class is the web app class >> loader: may cause memory leak... >> static ThreadLocal<StringBuilder> anonymousSubclass = new >> ThreadLocal<StringBuilder>() { >> >> @Override >> protected StringBuilder initialValue() { >> return new StringBuilder(1024); >> } >> }; >> } >> >> >> >> On Wed, Mar 9, 2016 at 11:32 AM, Ralph Goers <ralph.go...@dslextreme.com> >> wrote: >> >>> I still am unclear as to why you are thinking GC-free mode won’t work in >>> web apps. What is the issue with ThreadLocals that causes the problem? We >>> are using ThreadLocals for other things that seem to be working. >>> >>> Ralph >>> >>> On Mar 8, 2016, at 3:05 PM, Remko Popma <remko.po...@gmail.com> wrote: >>> >>> Some of the recent changes were to fix issues introduced by the reusable >>> message idea. It is good that we are not rushing this release, and thanks >>> everyone for your patience. >>> >>> I originally wanted to make GC-free mode the default to begin with, but >>> it may be smart to initially require that users switch GC-free mode on >>> explicitly, and only make it the default after it has gained a track >>> record. (Even so, it would only be switched on automatically for non-web >>> apps.) >>> >>> The async logger performance investigation is still ongoing. I hope to >>> be able to resolve it and do the GC-free write-up including performance >>> test results in the next few weeks. I am currently on a business trip, >>> working with people creating low latency trading systems, and they have >>> good ideas on how to investigate the performance regression, so that is >>> helpful. >>> >>> On Wed, Mar 9, 2016 at 4:01 AM, Gary Gregory <garydgreg...@gmail.com> >>> wrote: >>> >>>> I'm even more concerned now that more of the no-GC changes are coming >>>> in, still, fast and furious. >>>> >>>> I see what smells like a lot of non-OO code fly by here and there: lots >>>> if-else-if-else-if-else, as opposed to subclassing or delegation if >>>> appropriate. >>>> >>>> Are we rushing toward this no-GC goal without considering speed >>>> performance? >>>> >>>> Where are we on the async logger slow down investigation? >>>> >>>> Concerned and glad to see to much activity all at the same time, >>>> Gary >>>> >>>> On Thu, Mar 3, 2016 at 1:23 PM, Matt Sicker <boa...@gmail.com> wrote: >>>> >>>>> Remko (and anyone else who wants to try and solve this regression): >>>>> >>>>> https://www.jclarity.com/product/censum-free-trial/ >>>>> >>>>> Go ahead and get the trial and the guys at JClarity will give us >>>>> licenses. I'd use your apache.org email to be safe. >>>>> >>>>> On 3 March 2016 at 11:27, Matt Sicker <boa...@gmail.com> wrote: >>>>> >>>>>> So far, Remko's proposal is language-neutral since he defined >>>>>> endianness (big endian like java, but we could use either since >>>>>> ByteBuffer >>>>>> supports both) and field widths.. >>>>>> >>>>>> On 3 March 2016 at 03:15, Mikael Ståldal <mikael.stal...@magine.com> >>>>>> wrote: >>>>>> >>>>>>> If we are to design a new binary log event format, then I think that >>>>>>> we should make sure that it is not Java / JVM specific, and that it >>>>>>> will be >>>>>>> reasonably easy to implement reading and writing of it on other >>>>>>> platforms. >>>>>>> >>>>>>> On Thu, Mar 3, 2016 at 5:14 AM, Remko Popma <remko.po...@gmail.com> >>>>>>> wrote: >>>>>>> >>>>>>>> I created https://issues.apache.org/jira/browse/LOG4J2-1305 as a >>>>>>>> write up of my current thinking on the topic and a place to discuss >>>>>>>> ideas. >>>>>>>> Still need to add some things we discussed here (tools, >>>>>>>> endianness, versioning etc). >>>>>>>> >>>>>>>> It's a fascinating topic but I still have a lot of work to do on >>>>>>>> the GC-free epic before I can start working on this one. >>>>>>>> >>>>>>>> >>>>>>>> On Thursday, 3 March 2016, Remko Popma <remko.po...@gmail.com> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> Not Java Serialization, I was thinking simple ByteBuffer.putLong, >>>>>>>>> putInt, putBytes. This is much more performant ( >>>>>>>>> http://mechanical-sympathy.blogspot.jp/2012/07/native-cc-like-performance-for-java.html). >>>>>>>>> SBE (Simple Binary Encoding) seems overkill, but open to other >>>>>>>>> opinions. >>>>>>>>> >>>>>>>>> The less conditional logic in there the better, so I'm not that >>>>>>>>> interested in configurability. All log event fields, >>>>>>>>> ok. ThreadContextMap/Stack keys and values: similarly to other >>>>>>>>> repeating >>>>>>>>> strings like logger names: write to separate mapping file & only >>>>>>>>> write int >>>>>>>>> values (for count as well as key/value indices) to the "main" log >>>>>>>>> file. >>>>>>>>> >>>>>>>>> Two things we would need to decide is how to handle versioning, >>>>>>>>> and what Endianness to use. >>>>>>>>> >>>>>>>>> Version information (possibly with schema info) could be written >>>>>>>>> to the log file header. >>>>>>>>> >>>>>>>>> Endianness could also be written to the header, or we could simply >>>>>>>>> say we use network byte order (big endian). Intel chips use little >>>>>>>>> endian, >>>>>>>>> but apparently swapping is implemented with an intrinsic and is very >>>>>>>>> fast. >>>>>>>>> >>>>>>>>> On Thursday, 3 March 2016, Matt Sicker <boa...@gmail.com> wrote: >>>>>>>>> >>>>>>>>>> At that point, it would be nice if it were extensible. There are >>>>>>>>>> some neat binary formats we could use that would allow for that. >>>>>>>>>> >>>>>>>>>> On 2 March 2016 at 12:09, Gary Gregory <garydgreg...@gmail.com> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> I think we'd need to provide all LogEvent fields. >>>>>>>>>>> >>>>>>>>>>> Gary >>>>>>>>>>> >>>>>>>>>>> On Wed, Mar 2, 2016 at 9:13 AM, Remko Popma < >>>>>>>>>>> remko.po...@gmail.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> That's what I meant, I didn't make myself clear. For example, >>>>>>>>>>>> we could offer a simple binary layout: >>>>>>>>>>>> time stamp (8 bytes) >>>>>>>>>>>> level int (4 bytes) >>>>>>>>>>>> thread ID (4 bytes) - Thread names in separate file >>>>>>>>>>>> Logger ID (4 bytes) - Logger names in separate file. >>>>>>>>>>>> message length (4 bytes) >>>>>>>>>>>> message type (2 bytes) >>>>>>>>>>>> message data (variable length) >>>>>>>>>>>> throwable length (4 bytes) >>>>>>>>>>>> throwable data (variable length) >>>>>>>>>>>> >>>>>>>>>>>> It's a very different approach to logging. On the plus side, >>>>>>>>>>>> this would be extremely compact and very fast to write. >>>>>>>>>>>> >>>>>>>>>>>> On the other hand it would require a separate tool to >>>>>>>>>>>> decode/display the data in human readable form. Such a tool should >>>>>>>>>>>> handle >>>>>>>>>>>> text messages out of the box, but for custom messages I image >>>>>>>>>>>> there could >>>>>>>>>>>> be some plugin mechanism for custom decoders. >>>>>>>>>>>> >>>>>>>>>>>> All very interesting... >>>>>>>>>>>> :-) >>>>>>>>>>>> >>>>>>>>>>>> Sent from my iPhone >>>>>>>>>>>> >>>>>>>>>>>> On 2016/03/03, at 0:01, Matt Sicker <boa...@gmail.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>> That's what I thought at first, but he means non-human readable >>>>>>>>>>>> formats since we all use tools to parse logs as it is (Splunk and >>>>>>>>>>>> ELK are >>>>>>>>>>>> the big two I know of). >>>>>>>>>>>> >>>>>>>>>>>> On 2 March 2016 at 02:15, Remko Popma <remko.po...@gmail.com> >>>>>>>>>>>> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Re: binary logging, I think he's talking about providing an >>>>>>>>>>>>> API to log objects directly into byte buffers without turning >>>>>>>>>>>>> them into >>>>>>>>>>>>> Strings first. >>>>>>>>>>>>> >>>>>>>>>>>>> https://issues.apache.org/jira/browse/LOG4J2-1274 and >>>>>>>>>>>>> https://issues.apache.org/jira/browse/LOG4J2-506 >>>>>>>>>>>>> >>>>>>>>>>>>> were created with that in mind and should be a good step in >>>>>>>>>>>>> that direction. >>>>>>>>>>>>> >>>>>>>>>>>>> Sent from my iPhone >>>>>>>>>>>>> >>>>>>>>>>>>> On 2016/03/02, at 15:11, Gary Gregory <garydgreg...@gmail.com> >>>>>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> Well, I've often wondered about creating a binary format but >>>>>>>>>>>>> it seems that you could use JSON+ZIP or BSON and get most of the >>>>>>>>>>>>> advantages. >>>>>>>>>>>>> >>>>>>>>>>>>> Gary >>>>>>>>>>>>> >>>>>>>>>>>>> On Tue, Mar 1, 2016 at 9:12 PM, Matt Sicker <boa...@gmail.com> >>>>>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> One other interesting thing I learned is that improper use of >>>>>>>>>>>>>> logging is a huge source of performance problems. The GC-free >>>>>>>>>>>>>> parameterized >>>>>>>>>>>>>> message factory will help with one aspect of that (I suggested >>>>>>>>>>>>>> parameterized messages, but he countered with the Object[] that >>>>>>>>>>>>>> is >>>>>>>>>>>>>> created), and encouraging users to use a Supplier<String> >>>>>>>>>>>>>> instead of >>>>>>>>>>>>>> passing parameters should help as well (especially when those >>>>>>>>>>>>>> parameters >>>>>>>>>>>>>> have to be computed). He had some strong criticisms of logging >>>>>>>>>>>>>> APIs >>>>>>>>>>>>>> promoting bad practices which stems all the way back to log4j1 >>>>>>>>>>>>>> and affects >>>>>>>>>>>>>> pretty much every logging API in Java (some criticisms were >>>>>>>>>>>>>> actually >>>>>>>>>>>>>> outdated or didn't consider newer features of the API like >>>>>>>>>>>>>> markers and the >>>>>>>>>>>>>> huge amount of filters available). >>>>>>>>>>>>>> >>>>>>>>>>>>>> His other big idea was promoting the use of binary logging >>>>>>>>>>>>>> formats because humans rarely read the raw log files as it is, >>>>>>>>>>>>>> but it's not >>>>>>>>>>>>>> like there's a standard way to do that. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Now I kinda wonder if he'll find this thread one day and tell >>>>>>>>>>>>>> me how I misinterpreted him or something. ;) >>>>>>>>>>>>>> >>>>>>>>>>>>>> On 1 March 2016 at 22:28, Matt Sicker <boa...@gmail.com> >>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Alright, I learned some interesting things. I'm going to get >>>>>>>>>>>>>>> us some tools we can use to try and profile this. Otherwise, he >>>>>>>>>>>>>>> did suggest >>>>>>>>>>>>>>> trying out this project: >>>>>>>>>>>>>>> https://github.com/RichardWarburton/honest-profiler >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On 1 March 2016 at 19:31, Matt Sicker <boa...@gmail.com> >>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> So far he's said something about using lambdas for lazy >>>>>>>>>>>>>>>> evaluation (though I don't think that would actually help us >>>>>>>>>>>>>>>> at all). I'll >>>>>>>>>>>>>>>> try to talk to him one-on-one afterward to delve more into >>>>>>>>>>>>>>>> this. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On 1 March 2016 at 18:13, Ralph Goers < >>>>>>>>>>>>>>>> ralph.go...@dslextreme.com> wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Actually, most of the tests have the commands in the >>>>>>>>>>>>>>>>> comments right in the class. Just cut and past. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Ralph >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On Mar 1, 2016, at 1:43 PM, Matt Sicker <boa...@gmail.com> >>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> I can't even figure out how to execute the simple perf >>>>>>>>>>>>>>>>> test class. IntelliJ gives me some annotation processing >>>>>>>>>>>>>>>>> error, and doing >>>>>>>>>>>>>>>>> it from the command line is turning into a classpath >>>>>>>>>>>>>>>>> nightmare to figure >>>>>>>>>>>>>>>>> out what jars are needed to execute the test manually. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On 1 March 2016 at 11:34, Gary Gregory < >>>>>>>>>>>>>>>>> garydgreg...@gmail.com> wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Before the talk: Hi, I'm Remko, I help on Apache Log4j, >>>>>>>>>>>>>>>>>> are you available after the preso to talk about some issue >>>>>>>>>>>>>>>>>> we are seeing? >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Gary >>>>>>>>>>>>>>>>>> On Mar 1, 2016 8:29 AM, "Matt Sicker" <boa...@gmail.com> >>>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> I'm attending a JUG meetup tonight with Kirk Pepperdine >>>>>>>>>>>>>>>>>>> presenting. It's supposed to be a Java performance workshop >>>>>>>>>>>>>>>>>>> type of thing, >>>>>>>>>>>>>>>>>>> so if you've got a decent way to ask about it, I could see >>>>>>>>>>>>>>>>>>> if he can help >>>>>>>>>>>>>>>>>>> figure out this regression. I can at least show off the >>>>>>>>>>>>>>>>>>> SimplePerfTest and >>>>>>>>>>>>>>>>>>> any microbenchmarks we have. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> On 28 February 2016 at 11:54, Matt Sicker < >>>>>>>>>>>>>>>>>>> boa...@gmail.com> wrote: >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Take a look at the git bisect command. Might help you >>>>>>>>>>>>>>>>>>>> find which changes caused the problem. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> On Sunday, 28 February 2016, Gary Gregory < >>>>>>>>>>>>>>>>>>>> garydgreg...@gmail.com> wrote: >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Thank you for digging in Remko. This is will be a nice >>>>>>>>>>>>>>>>>>>>> theme to publicize when you get it figured out. >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Gary >>>>>>>>>>>>>>>>>>>>> On Feb 28, 2016 4:08 AM, "Remko Popma" < >>>>>>>>>>>>>>>>>>>>> remko.po...@gmail.com> wrote: >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> After removing the potential impact of appenders and >>>>>>>>>>>>>>>>>>>>>> layouts by testing with >>>>>>>>>>>>>>>>>>>>>> log4j-core\src\test\resources\perf-CountingNoOpAppender.xml >>>>>>>>>>>>>>>>>>>>>> and >>>>>>>>>>>>>>>>>>>>>> org.apache.logging.log4j.core.async.perftest.SimplePerfTest, >>>>>>>>>>>>>>>>>>>>>> I've confirmed >>>>>>>>>>>>>>>>>>>>>> my initial numbers: >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> 2.0: 7.5M ops/sec >>>>>>>>>>>>>>>>>>>>>> 2.1: 6M ops/sec >>>>>>>>>>>>>>>>>>>>>> 2.2: 6M ops/sec >>>>>>>>>>>>>>>>>>>>>> 2.3: 6M ops/sec >>>>>>>>>>>>>>>>>>>>>> 2.4: 4.5M ops/sec >>>>>>>>>>>>>>>>>>>>>> 2.5: 4M ops/sec >>>>>>>>>>>>>>>>>>>>>> 2.6: 2M ops/sec >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> I tried reverting various changes made to AsyncLogger >>>>>>>>>>>>>>>>>>>>>> since 2.0, performance improves a little up to 4M >>>>>>>>>>>>>>>>>>>>>> ops/sec. >>>>>>>>>>>>>>>>>>>>>> However, when completely reverting AsyncLogger source >>>>>>>>>>>>>>>>>>>>>> to the 2.0 version, performance is back to 7.5M ops/sec. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> I'll try starting from the 2.0 source and getting >>>>>>>>>>>>>>>>>>>>>> back to 2.6 functionality without losing performance... >>>>>>>>>>>>>>>>>>>>>> (Lengthy process...) >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> On Sat, Feb 27, 2016 at 12:18 PM, Remko Popma < >>>>>>>>>>>>>>>>>>>>>> remko.po...@gmail.com> wrote: >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> This is the PerfTestDriver test class (in >>>>>>>>>>>>>>>>>>>>>>> log4j-core/test, package ...async.perf). >>>>>>>>>>>>>>>>>>>>>>> Mainly perf3PlainNoLocation.xml: >>>>>>>>>>>>>>>>>>>>>>> RollingRandomAccessFileAppender, PatternLayout, all >>>>>>>>>>>>>>>>>>>>>>> loggers are AsyncLoggers, logging a simple string >>>>>>>>>>>>>>>>>>>>>>> without parameters. >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Profiling with YourKit did not tell me anything >>>>>>>>>>>>>>>>>>>>>>> useful. >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> I'm now eliminating the effect of Layouts/Appenders, >>>>>>>>>>>>>>>>>>>>>>> using CountingNoOpAppender, and seeing similar numbers. >>>>>>>>>>>>>>>>>>>>>>> So this seems to be >>>>>>>>>>>>>>>>>>>>>>> mostly an issue in AsyncLogger. >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> I'll let you know when I find out more. >>>>>>>>>>>>>>>>>>>>>>> There's a lot of trial and error here, so this may >>>>>>>>>>>>>>>>>>>>>>> take a while... >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Remko >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Sent from my iPhone >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> On 2016/02/26, at 21:02, Mikael Ståldal < >>>>>>>>>>>>>>>>>>>>>>> mikael.stal...@magine.com> wrote: >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Which components (appenders, layouts) are involved >>>>>>>>>>>>>>>>>>>>>>> in the tests? Would it be possible to do some profiling >>>>>>>>>>>>>>>>>>>>>>> to see if there is >>>>>>>>>>>>>>>>>>>>>>> any particular component which is to blame? >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> On Fri, Feb 26, 2016 at 12:51 PM, Remko Popma < >>>>>>>>>>>>>>>>>>>>>>> remko.po...@gmail.com> wrote: >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> To give you some rough impression on concrete >>>>>>>>>>>>>>>>>>>>>>>> numbers for this trend: >>>>>>>>>>>>>>>>>>>>>>>> 2.0: ~6M ops/sec >>>>>>>>>>>>>>>>>>>>>>>> 2.1-2.2: ~5M ops/sec >>>>>>>>>>>>>>>>>>>>>>>> 2.3-2.4: ~3-4M ops/sec >>>>>>>>>>>>>>>>>>>>>>>> 2.5: ~3M ops/sec >>>>>>>>>>>>>>>>>>>>>>>> 2.6: ~2M ops/sec >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> On Friday, 26 February 2016, Remko Popma < >>>>>>>>>>>>>>>>>>>>>>>> remko.po...@gmail.com> wrote: >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> You're absolutely right. I still have quite a few >>>>>>>>>>>>>>>>>>>>>>>>> unit tests to add. >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> Initial perf testing shows a downward trend in >>>>>>>>>>>>>>>>>>>>>>>>> Async Logger performance with every release. (Logging >>>>>>>>>>>>>>>>>>>>>>>>> simple >>>>>>>>>>>>>>>>>>>>>>>>> string messages without params.) This is worrisome >>>>>>>>>>>>>>>>>>>>>>>>> and I'm focusing on >>>>>>>>>>>>>>>>>>>>>>>>> figuring that out first: this will likely involve >>>>>>>>>>>>>>>>>>>>>>>>> additional code changes >>>>>>>>>>>>>>>>>>>>>>>>> and I'll add more tests after that. >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> Sent from my iPhone >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> On 2016/02/26, at 10:38, Gary Gregory < >>>>>>>>>>>>>>>>>>>>>>>>> garydgreg...@gmail.com> wrote: >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> Wow, I love the activity we are seeing toward 2.6! >>>>>>>>>>>>>>>>>>>>>>>>> All the perf work on top of an existing sizable >>>>>>>>>>>>>>>>>>>>>>>>> change set. Very exciting >>>>>>>>>>>>>>>>>>>>>>>>> indeed. >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> There sure are a lot of changes coming in. I hope >>>>>>>>>>>>>>>>>>>>>>>>> that we all can pitch in to make sure most if not all >>>>>>>>>>>>>>>>>>>>>>>>> of these changes get >>>>>>>>>>>>>>>>>>>>>>>>> code coverage from unit tests. I've not checked >>>>>>>>>>>>>>>>>>>>>>>>> closely, but it seems like >>>>>>>>>>>>>>>>>>>>>>>>> we may not have good coverage _yet_, or do I have the >>>>>>>>>>>>>>>>>>>>>>>>> wrong impression? >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> I want to make sure we keep our stability in tip >>>>>>>>>>>>>>>>>>>>>>>>> top shape :-) and that we have no regression from >>>>>>>>>>>>>>>>>>>>>>>>> previous releases. >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> Gary >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>>>>>>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> Java Persistence with Hibernate, Second Edition >>>>>>>>>>>>>>>>>>>>>>>>> <http://www.manning.com/bauer3/> >>>>>>>>>>>>>>>>>>>>>>>>> JUnit in Action, Second Edition >>>>>>>>>>>>>>>>>>>>>>>>> <http://www.manning.com/tahchiev/> >>>>>>>>>>>>>>>>>>>>>>>>> Spring Batch in Action >>>>>>>>>>>>>>>>>>>>>>>>> <http://www.manning.com/templier/> >>>>>>>>>>>>>>>>>>>>>>>>> Blog: http://garygregory.wordpress.com >>>>>>>>>>>>>>>>>>>>>>>>> Home: http://garygregory.com/ >>>>>>>>>>>>>>>>>>>>>>>>> Tweet! http://twitter.com/GaryGregory >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>>>>>>> [image: MagineTV] >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> *Mikael Ståldal* >>>>>>>>>>>>>>>>>>>>>>> Senior software developer >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> *Magine TV* >>>>>>>>>>>>>>>>>>>>>>> mikael.stal...@magine.com >>>>>>>>>>>>>>>>>>>>>>> Grev Turegatan 3 | 114 46 Stockholm, Sweden | >>>>>>>>>>>>>>>>>>>>>>> www.magine.com >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Privileged and/or Confidential Information may be >>>>>>>>>>>>>>>>>>>>>>> contained in this message. If you are not the addressee >>>>>>>>>>>>>>>>>>>>>>> indicated in this >>>>>>>>>>>>>>>>>>>>>>> message >>>>>>>>>>>>>>>>>>>>>>> (or responsible for delivery of the message to such >>>>>>>>>>>>>>>>>>>>>>> a person), you may not copy or deliver this message to >>>>>>>>>>>>>>>>>>>>>>> anyone. In such >>>>>>>>>>>>>>>>>>>>>>> case, >>>>>>>>>>>>>>>>>>>>>>> you should destroy this message and kindly notify >>>>>>>>>>>>>>>>>>>>>>> the sender by reply email. >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>>>> Matt Sicker <boa...@gmail.com> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>>> Matt Sicker <boa...@gmail.com> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>> Matt Sicker <boa...@gmail.com> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>> Matt Sicker <boa...@gmail.com> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>> Matt Sicker <boa...@gmail.com> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> -- >>>>>>>>>>>>>> Matt Sicker <boa...@gmail.com> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >>>>>>>>>>>>> Java Persistence with Hibernate, Second Edition >>>>>>>>>>>>> <http://www.manning.com/bauer3/> >>>>>>>>>>>>> JUnit in Action, Second Edition >>>>>>>>>>>>> <http://www.manning.com/tahchiev/> >>>>>>>>>>>>> Spring Batch in Action <http://www.manning.com/templier/> >>>>>>>>>>>>> Blog: http://garygregory.wordpress.com >>>>>>>>>>>>> Home: http://garygregory.com/ >>>>>>>>>>>>> Tweet! http://twitter.com/GaryGregory >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> Matt Sicker <boa...@gmail.com> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >>>>>>>>>>> Java Persistence with Hibernate, Second Edition >>>>>>>>>>> <http://www.manning.com/bauer3/> >>>>>>>>>>> JUnit in Action, Second Edition >>>>>>>>>>> <http://www.manning.com/tahchiev/> >>>>>>>>>>> Spring Batch in Action <http://www.manning.com/templier/> >>>>>>>>>>> Blog: http://garygregory.wordpress.com >>>>>>>>>>> Home: http://garygregory.com/ >>>>>>>>>>> Tweet! http://twitter.com/GaryGregory >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Matt Sicker <boa...@gmail.com> >>>>>>>>>> >>>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> [image: MagineTV] >>>>>>> >>>>>>> *Mikael Ståldal* >>>>>>> Senior software developer >>>>>>> >>>>>>> *Magine TV* >>>>>>> mikael.stal...@magine.com >>>>>>> Grev Turegatan 3 | 114 46 Stockholm, Sweden | www.magine.com >>>>>>> >>>>>>> Privileged and/or Confidential Information may be contained in this >>>>>>> message. If you are not the addressee indicated in this message >>>>>>> (or responsible for delivery of the message to such a person), you >>>>>>> may not copy or deliver this message to anyone. In such case, >>>>>>> you should destroy this message and kindly notify the sender by >>>>>>> reply email. >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Matt Sicker <boa...@gmail.com> >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Matt Sicker <boa...@gmail.com> >>>>> >>>> >>>> >>>> >>>> -- >>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >>>> Java Persistence with Hibernate, Second Edition >>>> <http://www.manning.com/bauer3/> >>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >>>> Spring Batch in Action <http://www.manning.com/templier/> >>>> Blog: http://garygregory.wordpress.com >>>> Home: http://garygregory.com/ >>>> Tweet! http://twitter.com/GaryGregory >>>> >>> >>> >>> >> > > > -- > Matt Sicker <boa...@gmail.com> >