Hi We got that camel-jaxb bug backported now to the 2.8.x branch. I think it would be a good time to start cutting a new 2.8.5 release.
On Wed, Apr 11, 2012 at 12:06 PM, Christian Müller <christian.muel...@gmail.com> wrote: > I still have to back port the JAXB Marshaller/Unmarshaller improvements. I > will do this today evening. > > Best, > Christian > > Sent from a mobile device > Am 11.04.2012 10:59 schrieb "Claus Ibsen" <claus.ib...@gmail.com>: > >> Hi >> >> I fixed some of the know bugs and backported them to the 2.9 branch so >> we will have those fixes in the release. >> I added a new 2.9.3 version in JIRA and pushed a few tickets to that. >> >> There is one pending ticket I will look at now, but its not a block >> for cutting a release. >> https://issues.apache.org/jira/browse/CAMEL-5157 >> >> >> And was there something about a JVM property being added to the JAXB >> type converters, that was a copy/paste from Apache CXF? >> If so that JVM system property should be named org.apache.camel etc. >> And we need to document that. >> >> >> >> On Wed, Apr 11, 2012 at 12:09 AM, Christian Müller >> <christian.muel...@gmail.com> wrote: >> > The numbers are really good! Go ahead with the 2.9.2 release. >> > >> > Best, >> > Christian >> > >> > Sent from a mobile device >> > Am 10.04.2012 17:44 schrieb "Hadrian Zbarcea" <hzbar...@gmail.com>: >> > >> >> Christian, >> >> >> >> Are those numbers good? Are they blocking the release? I'd like to cut >> the >> >> release sometimes this week. >> >> >> >> Cheers, >> >> Hadrian >> >> >> >> On 04/06/2012 10:58 AM, Christian Müller wrote: >> >> >> >>> By using a ByteArrayInputStream as payload, and a "warmed up" system (I >> >>> sent 100 messages before the measurement to warm up the system) I got >> the >> >>> following results with the payload of 2046 bytes: >> >>> >> >>> testUnmarshallConcurrent() took 2202ms (5196ms by using a string as >> >>> payload >> >>> and a cold system) >> >>> testUnmarshallFallbackConcurre**nt() took 1224ms (2761ms by using a >> >>> string as >> >>> payload and a cold system) >> >>> >> >>> testMarshallConcurrent() took 875ms >> >>> testMarshallFallbackConcurrent**() took 999ms >> >>> >> >>> Best, >> >>> Christian >> >>> >> >>> On Thu, Apr 5, 2012 at 11:18 PM, Daniel Kulp<dk...@apache.org> wrote: >> >>> >> >>> >> >>>> Great numbers! Huge improvement! >> >>>> >> >>>> Still wondering why the FallbackTypeConverter is faster than the >> >>>>> JaxbDataFormat... >> >>>>> >> >>>> >> >>>> The UnmarshalProcessor which is invoked in this does a: >> >>>> >> >>>> InputStream stream = ExchangeHelper.** >> >>>> getMandatoryInBody(exchange, >> >>>> InputStream.class); >> >>>> >> >>>> since the DataFormat things require a stream. The Fallback stuff can >> >>>> keep >> >>>> the payload as a String and create the writer from that. Thus, part >> of >> >>>> the >> >>>> time of the JaxbDataFormat tests is constantly converting from String >> to >> >>>> InputStream. >> >>>> >> >>>> Probably should update the tests to use a ByteArrayInputStream as the >> >>>> payload or something to make them more comparable. >> >>>> >> >>>> >> >>>> Dan >> >>>> >> >>>> >> >>>> >> >>>> >> >>>> On Thursday, April 05, 2012 11:05:46 PM Christian Müller wrote: >> >>>> >> >>>>> I did a few test an recorded the fastest one: >> >>>>> >> >>>>> Length: 2046: >> >>>>> ============= >> >>>>> Before: >> >>>>> testUnmarshallConcurrent() took 14122ms >> >>>>> testUnmarshallFallbackConcurre**nt() took 8479ms >> >>>>> >> >>>>> After: >> >>>>> testUnmarshallConcurrent() took 5196ms >> >>>>> testUnmarshallFallbackConcurre**nt() took 2761ms >> >>>>> >> >>>>> Length: 104 >> >>>>> =========== >> >>>>> Before: >> >>>>> testUnmarshallConcurrent() took 7281ms >> >>>>> testUnmarshallFallbackConcurre**nt() took 4815ms >> >>>>> >> >>>>> After: >> >>>>> testUnmarshallConcurrent() took 2767ms >> >>>>> testUnmarshallFallbackConcurre**nt() took 2458ms >> >>>>> >> >>>>> Still wondering why the FallbackTypeConverter is faster than the >> >>>>> JaxbDataFormat... >> >>>>> >> >>>>> Best, >> >>>>> Christian >> >>>>> >> >>>>> On Thu, Apr 5, 2012 at 6:55 PM, Daniel Kulp<dk...@apache.org> >> wrote: >> >>>>> >> >>>>>> On Thursday, April 05, 2012 06:46:43 PM Christian Müller wrote: >> >>>>>> >> >>>>>>> Hi Dan, >> >>>>>>> >> >>>>>>> great work! I got the following results: >> >>>>>>> >> >>>>>>> testUnmarshallConcurrent() took 5898ms >> >>>>>>> testUnmarshallFallbackConcurre**nt() took 2477ms >> >>>>>>> testMarshallFallbackConcurrent**() took 1728ms >> >>>>>>> testMarshallConcurrent() took 1674ms >> >>>>>>> >> >>>>>>> I'm wondering why 'testUnmarshallConcurrent()' is significant >> slower >> >>>>>>> than >> >>>>>>> '**testUnmarshallFallbackConcurre**nt()'... >> >>>>>>> >> >>>>>> >> >>>>>> testUnmarshallFallbackConcurre**nt still uses your "old" tiny >> >>>>>> payload. >> >>>>>> I >> >>>>>> only updated testUnmarshallConcurrent to use a much larger payload. >> (I >> >>>>>> think around 2K). Feel free to play with the payload sizes and >> such >> >>>>>> to >> >>>>>> get some comparisons and such. >> >>>>>> >> >>>>>> >> >>>>>> Dan >> >>>>>> >> >>>>>> Best, >> >>>>>>> Christian >> >>>>>>> >> >>>>>>> On Thu, Apr 5, 2012 at 4:53 PM, Daniel Kulp<dk...@apache.org> >> >>>>>>> >> >>>>>> wrote: >> >>>> >> >>>>> Christian, >> >>>>>>>> >> >>>>>>>> I just committed some updates to the jaxb component to completely >> >>>>>>>> flip >> >>>>>>>> all the unmarshalling over to StAX which completely removes the >> >>>>>>>> >> >>>>>>> need >> >>>> >> >>>>> for the pooling and locks and such. Can you give it a quick run >> >>>>>>>> >> >>>>>>> on >> >>>> >> >>>>> your box and see how the performance looks? I'd also be curious >> >>>>>>>> about >> >>>>>>>> the difference with the larger XML messages created with the code >> >>>>>>>> below. >> >>>>>>>> >> >>>>>>>> One note: right now, this REQUIRES Woodstox to be at all >> >>>>>>>> threadsafe. >> >>>>>>>> I'm going to try and update the StaxConverter to work better with >> >>>>>>>> the >> >>>>>>>> in-jdk stax parser. There is a TON of code in CXF I can use, >> just >> >>>>>>>> depends on if it's easier to just copy the code over or somehow >> >>>>>>>> shade >> >>>>>>>> it in or something. >> >>>>>>>> >> >>>>>>>> Anyway, can you give it a quick run with Woodstox and let me know >> >>>>>>>> how >> >>>>>>>> >> >>>>>>> >> >>>>>> it >> >>>>>> >> >>>>>> goes? >> >>>>>>>> >> >>>>>>>> Dan >> >>>>>>>> >> >>>>>>>> On Wednesday, April 04, 2012 05:54:35 PM Daniel Kulp wrote: >> >>>>>>>> >> >>>>>>>>> On Wednesday, April 04, 2012 05:21:25 PM Daniel Kulp wrote: >> >>>>>>>>> >> >>>>>>>>>> On Wednesday, April 04, 2012 11:09:14 PM Christian Müller >> >>>>>>>>>> >> >>>>>>>>> wrote: >> >>>> >> >>>>> I just committed the last piece of code for [1] which improve >> >>>>>>>>>>> the >> >>>>>>>>>>> performance of XML unmarshalling with JAXB. I would like to >> >>>>>>>>>>> see >> >>>>>>>>>>> this >> >>>>>>>>>>> improvement also in Camel 2.9.2 and Camel 2.8.5. At present >> >>>>>>>>>>> I'm >> >>>>>>>>>>> waiting >> >>>>>>>>>>> for the users response whether this solution out performs his >> >>>>>>>>>>> custom >> >>>>>>>>>>> pooling solution (using commons-pool). >> >>>>>>>>>>> I would also appreciate if you could have a look at the >> >>>>>>>>>>> changes. >> >>>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>>> I'll take a closer look tomorrow, but my initial look at the >> >>>>>>>>>> code >> >>>>>>>>>> definitely has concerns in a multi-threaded case. Putting a >> >>>>>>>>>> lock >> >>>>>>>>>> around >> >>>>>>>>>> the unmarshall it really going to cause a performance hit in >> >>>>>>>>>> multi-threaded cases, particularly with larger payloads. >> >>>>>>>>>> >> >>>>>>>>> I'll >> >>>> >> >>>>> play a >> >>>>>>>>>> bit with it tomorrow to see what I can do with it. >> >>>>>>>>>> >> >>>>>>>>> >> >>>>>>>>> Yea... a very quick test by creating the payload string via: >> >>>>>>>>> private int fooBarSize = 200; >> >>>>>>>>> public String createPayload() throws Exception { >> >>>>>>>>> >> >>>>>>>>> Foo foo = new Foo(); >> >>>>>>>>> for (int x = 0; x< fooBarSize; x++) { >> >>>>>>>>> >> >>>>>>>>> Bar bar = new Bar(); >> >>>>>>>>> bar.setName("Name: " + x); >> >>>>>>>>> bar.setValue("value: " + x); >> >>>>>>>>> foo.getBarRefs().add(bar); >> >>>>>>>>> >> >>>>>>>>> } >> >>>>>>>>> Marshaller m = JAXBContext.newInstance(Foo.**class, >> >>>>>>>>> >> >>>>>>>>> Bar.class).createMarshaller(); >> >>>>>>>>> >> >>>>>>>>> StringWriter writer = new StringWriter(); >> >>>>>>>>> m.marshal(foo, writer); >> >>>>>>>>> return writer.toString(); >> >>>>>>>>> >> >>>>>>>>> } >> >>>>>>>>> >> >>>>>>>>> (ends up just over 8K in size) >> >>>>>>>>> >> >>>>>>>>> and then removing the locks and creating a new unmarshaller per >> >>>>>>>>> request >> >>>>>>>>> drops the time from 12 seconds to 5.5 seconds on my machine. >> >>>>>>>>> (testUnmarshallConcurrent) That's huge. I'll look a bit more >> >>>>>>>>> >> >>>>>>>> >> >>>>>>>> tomorrow. >> >>>>>>>> >> >>>>>>>> Dan >> >>>>>>>>> >> >>>>>>>> >> >>>>>>>> -- >> >>>>>>>> Daniel Kulp >> >>>>>>>> dk...@apache.org - http://dankulp.com/blog >> >>>>>>>> Talend Community Coder - http://coders.talend.com >> >>>>>>>> >> >>>>>>> >> >>>>>> -- >> >>>>>> Daniel Kulp >> >>>>>> dk...@apache.org - http://dankulp.com/blog >> >>>>>> Talend Community Coder - http://coders.talend.com >> >>>>>> >> >>>>> -- >> >>>> Daniel Kulp >> >>>> dk...@apache.org - http://dankulp.com/blog >> >>>> Talend Community Coder - http://coders.talend.com >> >>>> >> >>>> >> >>>> >> >>> >> >> -- >> >> Hadrian Zbarcea >> >> Principal Software Architect >> >> Talend, Inc >> >> http://coders.talend.com/ >> >> http://camelbot.blogspot.com/ >> >> >> >> >> >> -- >> Claus Ibsen >> ----------------- >> CamelOne 2012 Conference, May 15-16, 2012: http://camelone.com >> FuseSource >> Email: cib...@fusesource.com >> Web: http://fusesource.com >> Twitter: davsclaus, fusenews >> Blog: http://davsclaus.blogspot.com/ >> Author of Camel in Action: http://www.manning.com/ibsen/ >> -- Claus Ibsen ----------------- CamelOne 2012 Conference, May 15-16, 2012: http://camelone.com FuseSource Email: cib...@fusesource.com Web: http://fusesource.com Twitter: davsclaus, fusenews Blog: http://davsclaus.blogspot.com/ Author of Camel in Action: http://www.manning.com/ibsen/