Hi Andreas, I will not change the reporter. The reason is the risk with memory consumption. That's why we opened this discussion. I will always prevent from growing Surefire memory consumption.
I do not want to change encoding because there is no way to do and does not make sense. Maybe additional documentation would help the users. Closing streams is on my list. I would like to finish populating existing changes made so far and then communicate with all in ML. In 2.20.1 I want to support JDK 9 and I would like to have another format of stream we are sending from forked JVM to Maven. The stream format is in good progress and should fix SUREFIRE-1222 and maybe those blocker issues we have now. On Mon, Apr 17, 2017 at 8:33 PM, Andreas Gudian <andreas.gud...@gmail.com> wrote: > What ever you do, make sure you never try to put unbounded sysout/syserr of > a test case into memory, ever. Not even for a short time, as there may be > users with a ton of output that is currently buffered in the > overflow-files. Changing this can cause serious performance issues (gc > pauses, swapping) or just break the current behavior. > > Writing some XML is no rocket science, especially as our schema is very > simple and barely changes anyway. The only thing to take care is encoding > and closing all streams at the right time - but that won't be much simpler > using JAXB. > > Just my 2 cent ;-) > > > Michael Osipov <micha...@apache.org> schrieb am So. 16. Apr. 2017 um > 17:12: > > > Am 2017-04-16 um 16:52 schrieb Tibor Digana: > > >>> That would still create a string in memory, won't it? > > > It would still leak in memory while getter is called. > > > Streaming to XML is better in this case. > > > > > > Do we have any alternative? > > > > I have to think about it and understand the whole system. > > But why not use the regular XMLStreamWriter paired with this: > > http://stackoverflow.com/a/20000514/696632. > > > > You'll be able to stream whatever you want. > > > > > On Sun, Apr 16, 2017 at 4:40 PM, Michael Osipov <micha...@apache.org> > > wrote: > > > > > >> Am 2017-04-16 um 16:15 schrieb Tibor Digana: > > >> > > >>> Since we have XSD [1] we can generate classes and call setters in > > >>> particular places in StatelessXmlReporter.java. > > >>> Regarding memory consumption system-out may consume really a lot of > > >>> memory. > > >>> Therefore this is my proposal: > > >>> > > >>> @XmlJavaTypeAdapter(CdataSystemAdapter.class) > > >>> public Utf8RecodingDeferredFileOutputStream getSystemOut() > > >>> > > >>> class CdataSystemAdapter > > >>> WeakReference with utf8RecodingDeferredFileOutputStream.writeTo( > > >>> stream ) > > >>> return "<![CDATA[" + new String( stream, UTF_8 ) + "]]>" > > >>> > > >> > > >> That would still create a string in memory, won't it? > > >> > > >> [1] > > >>> https://maven.apache.org/surefire/maven-surefire-plugin/xsd/ > > >>> surefire-test-report.xsd > > >>> > > >> > > >> This needs a rewrite, too much duplication, no typing but xs:string > > only. > > >> > > >> On Sun, Apr 16, 2017 at 2:43 PM, michaelo [via Maven] < > > >>> ml-node+s40175n5906482...@n5.nabble.com> wrote: > > >>> > > >>> Am 2017-04-16 um 14:21 schrieb Tibor Digana: > > >>>> > > >>>> Hi, > > >>>>> > > >>>>> I want to first talk with you about XML marshaller > > StatelessXmlReporter > > >>>>> > > >>>> [1] > > >>>> > > >>>>> in Surefire which is built on the top of SharedUtils' > > >>>>> > > >>>> PrettyPrintXMLWriter. > > >>>> > > >>>>> > > >>>>> I found out issues after a contributor opened this issue [2]. > > >>>>> > > >>>>> The problem is that we are using two streams, OutputStream and > > Writer, > > >>>>> > > >>>> to > > >>>> > > >>>>> create XML in file system for one reason. We write CDATA directly > to > > the > > >>>>> stream apart of xml facility. We have bug with escaping illegal > > >>>>> > > >>>> characters. > > >>>> > > >>>>> > > >>>>> Instead, my proposal is to create XSD and Jaxb stubs and marshal it > > to > > >>>>> > > >>>> XML > > >>>> > > >>>>> file and we do need to care about low level XML and escaping > > characters. > > >>>>> The code will be easier to understand. The elements system-out and > > >>>>> system-err can be large but we have the stream already in temp > files > > >>>>> Utf8RecodingDeferredFileOutputStream which means that the Jaxb > > >>>>> > > >>>> mashaller > > >>>> > > >>>>> will not keep String in memory too long - only while Marshaller > needs > > >>>>> > > >>>> the > > >>>> > > >>>>> string. > > >>>>> > > >>>>> What is your opinion? > > >>>>> > > >>>> > > >>>> Looking at the current code -- a lot of boilerplate. I am quite > > >>>> experienced with JAXB, XJC and the Maven JAXB2 Plugin [1]. > > >>>> > > >>>> Consider that JAXB always holds the model in memory. If you intend > to > > >>>> maintain streams within an XML you can resort fragments and other > > stuff > > >>>> MOXy supports. But let me tell you that it won't be that easy as you > > >>>> think if you want everything as streaming with little memory usage. > > >>>> > > >>>> Michael > > >>>> > > >>>> BTW: this should go to dev@ > > >>>> > > >>>> [1] https://github.com/highsource/maven-jaxb2-plugin > > >>>> > > >>>> ------------------------------------------------------------ > --------- > > >>>> To unsubscribe, e-mail: [hidden email] > > >>>> <http:///user/SendEmail.jtp?type=node&node=5906482&i=0> > > >>>> For additional commands, e-mail: [hidden email] > > >>>> <http:///user/SendEmail.jtp?type=node&node=5906482&i=1> > > >>>> > > >>>> > > >>>> > > >>>> ------------------------------ > > >>>> If you reply to this email, your message will be added to the > > discussion > > >>>> below: > > >>>> http://maven.40175.n5.nabble.com/Re-rewrite-StatelessXmlRepo > > >>>> rter-fo-JAXB- > > >>>> tp5906482.html > > >>>> To start a new topic under Maven Developers, email > > >>>> ml-node+s40175n142166...@n5.nabble.com > > >>>> To unsubscribe from Maven Developers, click here > > >>>> <http://maven.40175.n5.nabble.com/template/NamlServlet.jtp?m > > >>>> acro=unsubscribe_by_code&node=142166&code=dGlib3JkaWdhbmFAYX > > >>>> BhY2hlLm9yZ3wxNDIxNjZ8LTI4OTQ5MjEwMg==> > > >>>> . > > >>>> NAML > > >>>> <http://maven.40175.n5.nabble.com/template/NamlServlet.jtp?m > > >>>> acro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base > > >>>> =nabble.naml.namespaces.BasicNamespace-nabble.view.web. > > >>>> template.NabbleNamespace-nabble.view.web.template.NodeNamesp > > >>>> ace&breadcrumbs=notify_subscribers%21nabble%3Aemail. > > >>>> naml-instant_emails%21nabble%3Aemail.naml-send_instant_ > > >>>> email%21nabble%3Aemail.naml> > > >>>> > > >>>> > > >>> > > >>> > > >>> > > >>> -- > > >>> View this message in context: http://maven.40175.n5.nabble.c > > >>> om/Re-rewrite-StatelessXmlReporter-fo-JAXB-tp5906482p5906521.html > > >>> Sent from the Maven Developers mailing list archive at Nabble.com. > > >>> > > >>> > > >> > > >> --------------------------------------------------------------------- > > >> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org > > >> For additional commands, e-mail: dev-h...@maven.apache.org > > >> > > >> > > > > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org > > For additional commands, e-mail: dev-h...@maven.apache.org > > > > > -- Cheers Tibor