What about using a local host bound socket rather than studio?

In fact a socket could open up other options like forking the tests inside
docker, or running the surefire forks on remote JVMs.

Plus we gain more control (modulo TCP retry/timeouts)

On Sun 19 Feb 2017 at 11:16, Tibor Digana <tibor.dig...@googlemail.com>
wrote:

> Currently I placed sleep(1sec) before child process exit(0). If the reader
> process ThreadedStreamConsumer would read buffer entirely within 1 sec and
> the build pass then I have to add a confirmation mechanism where the exit
> event must be confirmed by plugin until short period of time.
> Later we should not use these pipes but standard file system, but we have
> to take care of SecurityException thrown by JUnit3.
>
> On Sun, Feb 19, 2017 at 11:37 AM, Michael Osipov <micha...@apache.org>
> wrote:
>
> > Am 2017-02-18 um 23:19 schrieb Christian Schulte:
> >
> >> Am 02/17/17 um 21:48 schrieb Michael Osipov:
> >>
> >>> Hi folks,
> >>>
> >>> Christian Schulte asked me a couple of days ago wether I am able to
> >>> build Surefire master with Maven master. It was constantly failing for
> >>> him on his OpenBSD machines. Since I have several real servers with
> >>> FreeBSD 10.3-STABLE at hand I did run all Surefire ITs and I was able
> to
> >>> reproduce it. Our entire test infrastructure wasn't unfortunately!
> >>>
> >>> @Tibor: correct me if something is wrong or missing!
> >>>
> >>> After several days of heavy testing, thread dumps and log file analysis
> >>> with Tibor Digana and various Maven combinations (3.3.9, master,
> >>> MNG-6169, MNG-6169 + MCLEAN 3.0.0) we figured out that there are
> several
> >>> serious bugs in Surefire master, Maven Shared Utils 0.9/3.1.0 and
> likely
> >>> Maven Clean Plugin 3.0.0.
> >>>
> >>> Since crucial parts of Surefire rely on native code in the JVM (forks,
> >>> streams), our code was not robust enough.
> >>>
> >>> As of today we have found:
> >>>
> >>> * Missing flushes in streams caused forked VM to be apparently
> >>> non-responsive
> >>> * TestNG tests mostly failed due to duplicate contradicting properties
> >>> passed to forked VMs
> >>> * Uninitialized/too early attributes made daemon threads to kill forked
> >>> VMs
> >>> * Code or dependency change from MCLEAN 2.6.1 to 3.0.0 cause repeated
> >>> failures of a handful ITs
> >>> @Karl Heinz: were you able to figure out something here?
> >>>
> >>> Issues in JIRA are pending...
> >>>
> >>> Everyone's invited to take a look at the log output as well as the
> >>> target directory of surefire-integration-tests and contribute:
> >>> http://home.apache.org/~michaelo/maven/surefire/. The filenames should
> >>> be pretty much self-explanatory.
> >>>
> >>> My big question is: how can we improve our test infrastructure? Can we
> >>> raise with INFRA to get at least one FreeBSD and Solaris node for
> >>> Jenkins? I consider coverage on Windows and Ubuntu way to small, we do
> >>> not even have a CentOS node. Surefire ITs and Maven ITs are paramount
> >>> for us, we should treat them as such!
> >>>
> >>> Michael
> >>>
> >>
> >> Does any of your findings solve the following already? This is what
> >> makes the Jenkins build jobs appear unreliable. It's sending out an
> >> email about a failed job and all you see is something like the following
> >> sporadically. I am having the same issue locally sporadically.
> >>
> >> [ERROR] Failed to execute goal
> >> org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test
> >> (default-test) on project child2: Execution default-test of goal
> >> org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test failed: The
> >> forked VM terminated without saying properly goodbye. VM crash or
> >> System.exit called ? -> [Help 1]
> >> org.apache.maven.lifecycle.LifecycleExecutionException: Failed to
> >> execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test
> >> (default-test) on project child2: Execution default-test of goal
> >> org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test failed: The
> >> forked VM terminated without saying properly goodbye. VM crash or
> >> System.exit called ?
> >>
> >
> > We were able to solve only a few cases so far: 10%. The rest is still
> > failing.
> >
> > I made some digging: it seems to be a very common problem in NodeJS with
> > async and forking:
> > https://github.com/nodejs/node/issues/2972
> > https://github.com/nodejs/node/issues/6456
> > http://stackoverflow.com/q/11138355/696632
> > http://stackoverflow.com/q/1716296/696632
> > https://github.com/nodejs/node-v0.x-archive/issues/8329
> > https://github.com/nodejs/node-v0.x-archive/issues/1669
> > https://github.com/nodejs/node-v0.x-archive/issues/3737
> >
> >
> > Especially this answer is our case:
> >
> >> That's not a bug - process.exit() is an imperative that says "exit
> now!".
> >>
> >> When stdout/stderr is a pipe (as is the case with child processes) and
> >> said pipe is full, pending data gets lost. Waiting until the pipe drains
> >> is not an option, that could hang the process indefinitely.
> >>
> >
> > I think if we don't gain more control over stdio, we are lost...
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> > For additional commands, e-mail: dev-h...@maven.apache.org
> >
> >
>
>
> --
> Cheers
> Tibor
>
-- 
Sent from my phone

Reply via email to