Re: [SUMMARY] 3 ITs permanently fail on Linux / Maven Core

2019-08-04 Thread Tibor Digana
Hi devs,

I hope you have spent a nice weekend ;-)

Integrated new Surefire feature [1] in the core-its branch [2] which fixed
the first issue (see point 1.) and the build is successful [3].

After making an analysis, with a help of the logs, we can see that there
are 3 known issues at least:

1. Surefire forked JVM should not be spied by Agent of Jenkins. This Agent
is mandatory in Maven build process.
   Using unnecessary agent in Surefire JVM would mean that the tests fail
with well known JUnit4 assertion failures [4].
   Removing JAVA_TOOL_OPTIONS cut the agent off in the tests.
   [proof by Stephen Connolly] Ensure any forked Maven executions are not
spied on by Jenkins
2. a JVM warning is printed in standard output and caused by the commit [5]
where the tests expected clean stream, see [6].
   The build [7] contains the commit 690841e9 and fails. This was found and
proved by bisect of comits.
3. MAVEN_OPTS
   There are several variants.
   Herve's investigation which is fine, and
   mine [8] which is an improvement taking developer's mavenOpts from his
build into Surefire's forked JVM.
   Additionally, I skipped [9] global env.MAVEN_OPTS from '.mavenrc' in
order to make sure that the influence of the system (hardware) is avoided
and I can fully consider concentrate only on software issues.
   So this helps me to separate the influence and avoid a mix of influences
in my investigation process.

[1]:
https://github.com/apache/maven-surefire/commit/065001b2e6417126fd80d5f1a5523a3469e3dd5a
[2]:
https://github.com/apache/maven-integration-testing/commit/5be07fd52727ef09dcc29539e80fb6aff534ad3b#diff-600376dffeb79835ede4a0b285078036R157
[3]:
https://builds.apache.org/job/maven-box/job/maven/job/removed-java-tools-2/2/
[4]: expected:<[]> but was:<[Picked up JAVA_TOOL_OPTIONS: ...]>
[5]: 7/24/2019, 690841e9, [MNG-6697]
https://github.com/apache/maven/pull/261#issuecomment-517999286
[6]: expected:<[]> but was:<[WARNING: An illegal reflective access
operation has occurred ... ]>.
 For more information see [5].
[7]:
https://builds.apache.org/job/maven-box/job/maven/job/removed-java-tools-3/
[8]:
https://github.com/apache/maven-integration-testing/commit/5a40bb177b5ad3851cabf20c7983998d76258860#diff-089d3294860484e2addcd4d75bf8596fR352

https://github.com/apache/maven/commit/ad58ca489038829d5c9d54d7201ddf3eac49ad20
[9]:
https://github.com/apache/maven/commit/e0a67951a8c5258546c48cd45a74a31a71b74424

Cheers
Tibor17

On Sat, Aug 3, 2019 at 9:12 PM Robert Scholte  wrote:

> Here's a very short summary and conclusion about what happened the last
> period.
>
> Half July some integration tests of Maven started to fail, but not always
> (it good happen that a certain JDK would succeed again with the next
> run).
> At that time we only noticed:
> - it failed only on the Linux nodes of Jenkins.
> - the failing tests were using MAVEN_OPTS
>
> It took quite a while, but in the end Hervé discovered the root cause:
> - On some nodes there was an unexpected ${user.home}/.m2/.mavenrc file
> that set the value of MAVEN_OPTS
>
> INFRA discovered that it was the incubator-shardingsphere that created
> this file when building there project.
>
> We've provided a PR for this project together with an explanation. This
> PR
> has been accepted and INFRA has removed the .mavenrc files.
>
> Over the past weeks a lot of changes has been done to the code for
> investigation.
> All changes that were done to change the behavior related to environments
> variables and mavenrc file should and will be reverted.
> Mavens master branch was stable, so to ensure the right things are still
> tested the need to be restored (some of them did indeed test the
> MAVEN_OPTS explicitly as issued in its JIRA).
> In general we don't change ITs, we only extend then and provide a range
> to
> control for which Maven versions the test is valid.
>
> Details and discussions can be found on the slack channel.
>
> thanks,
> Robert
>
> -
> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> For additional commands, e-mail: dev-h...@maven.apache.org
>
>


Re: [SUMMARY] 3 ITs permanently fail on Linux / Maven Core

2019-08-04 Thread Bernd Eckenfels
Well, the Maven project is not the only one who wants to ensure repeatable 
builds and may be surprises by things like that. It certainly would be a 
safeguard for anybody interested in explizit configurations for CI jobs.


--
http://bernd.eckenfels.net


Von: Robert Scholte 
Gesendet: Sonntag, August 4, 2019 8:26 PM
An: Maven Developers List
Betreff: Re: [SUMMARY] 3 ITs permanently fail on Linux / Maven Core

No, there's no need for that and it would over-complicate the scripts.
mavenrc can be handy, but only at INFRA level.

As said, we were able to fix it on the project-level. The project simply
wasn't aware of
- side effects and impact of creating this file on Jenkins
- the existence of .mvn/jvm.config

Robert

On Sun, 04 Aug 2019 18:51:52 +0200, Bernd Eckenfels
 wrote:

> Do we need a Maven Option to turn of processing of implicit
> configurations, just like you can turn of shellrc Files?
>
>
> --
> http://bernd.eckenfels.net
>
> 
> Von: Robert Scholte 
> Gesendet: Samstag, August 3, 2019 9:12 PM
> An: Maven Developers List
> Betreff: [SUMMARY] 3 ITs permanently fail on Linux / Maven Core
>
> Here's a very short summary and conclusion about what happened the last
> period.
>
> Half July some integration tests of Maven started to fail, but not always
> (it good happen that a certain JDK would succeed again with the next
> run).
> At that time we only noticed:
> - it failed only on the Linux nodes of Jenkins.
> - the failing tests were using MAVEN_OPTS
>
> It took quite a while, but in the end Hervé discovered the root cause:
> - On some nodes there was an unexpected ${user.home}/.m2/.mavenrc file
> that set the value of MAVEN_OPTS
>
> INFRA discovered that it was the incubator-shardingsphere that created
> this file when building there project.
>
> We've provided a PR for this project together with an explanation. This
> PR
> has been accepted and INFRA has removed the .mavenrc files.
>
> Over the past weeks a lot of changes has been done to the code for
> investigation.
> All changes that were done to change the behavior related to environments
> variables and mavenrc file should and will be reverted.
> Mavens master branch was stable, so to ensure the right things are still
> tested the need to be restored (some of them did indeed test the
> MAVEN_OPTS explicitly as issued in its JIRA).
> In general we don't change ITs, we only extend then and provide a range
> to
> control for which Maven versions the test is valid.
>
> Details and discussions can be found on the slack channel.
>
> thanks,
> Robert
>
> -
> 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



Re: [SUMMARY] 3 ITs permanently fail on Linux / Maven Core

2019-08-04 Thread Robert Scholte

No, there's no need for that and it would over-complicate the scripts.
mavenrc can be handy, but only at INFRA level.

As said, we were able to fix it on the project-level. The project simply  
wasn't aware of

- side effects and impact of creating this file on Jenkins
- the existence of .mvn/jvm.config

Robert

On Sun, 04 Aug 2019 18:51:52 +0200, Bernd Eckenfels  
 wrote:


Do we need a Maven Option to turn of processing of implicit  
configurations, just like you can turn of shellrc Files?



--
http://bernd.eckenfels.net


Von: Robert Scholte 
Gesendet: Samstag, August 3, 2019 9:12 PM
An: Maven Developers List
Betreff: [SUMMARY] 3 ITs permanently fail on Linux / Maven Core

Here's a very short summary and conclusion about what happened the last
period.

Half July some integration tests of Maven started to fail, but not always
(it good happen that a certain JDK would succeed again with the next  
run).

At that time we only noticed:
- it failed only on the Linux nodes of Jenkins.
- the failing tests were using MAVEN_OPTS

It took quite a while, but in the end Hervé discovered the root cause:
- On some nodes there was an unexpected ${user.home}/.m2/.mavenrc file
that set the value of MAVEN_OPTS

INFRA discovered that it was the incubator-shardingsphere that created
this file when building there project.

We've provided a PR for this project together with an explanation. This  
PR

has been accepted and INFRA has removed the .mavenrc files.

Over the past weeks a lot of changes has been done to the code for
investigation.
All changes that were done to change the behavior related to environments
variables and mavenrc file should and will be reverted.
Mavens master branch was stable, so to ensure the right things are still
tested the need to be restored (some of them did indeed test the
MAVEN_OPTS explicitly as issued in its JIRA).
In general we don't change ITs, we only extend then and provide a range  
to

control for which Maven versions the test is valid.

Details and discussions can be found on the slack channel.

thanks,
Robert

-
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



Re: [SUMMARY] 3 ITs permanently fail on Linux / Maven Core

2019-08-04 Thread Bernd Eckenfels
Do we need a Maven Option to turn of processing of implicit configurations, 
just like you can turn of shellrc Files?


--
http://bernd.eckenfels.net


Von: Robert Scholte 
Gesendet: Samstag, August 3, 2019 9:12 PM
An: Maven Developers List
Betreff: [SUMMARY] 3 ITs permanently fail on Linux / Maven Core

Here's a very short summary and conclusion about what happened the last
period.

Half July some integration tests of Maven started to fail, but not always
(it good happen that a certain JDK would succeed again with the next run).
At that time we only noticed:
- it failed only on the Linux nodes of Jenkins.
- the failing tests were using MAVEN_OPTS

It took quite a while, but in the end Hervé discovered the root cause:
- On some nodes there was an unexpected ${user.home}/.m2/.mavenrc file
that set the value of MAVEN_OPTS

INFRA discovered that it was the incubator-shardingsphere that created
this file when building there project.

We've provided a PR for this project together with an explanation. This PR
has been accepted and INFRA has removed the .mavenrc files.

Over the past weeks a lot of changes has been done to the code for
investigation.
All changes that were done to change the behavior related to environments
variables and mavenrc file should and will be reverted.
Mavens master branch was stable, so to ensure the right things are still
tested the need to be restored (some of them did indeed test the
MAVEN_OPTS explicitly as issued in its JIRA).
In general we don't change ITs, we only extend then and provide a range to
control for which Maven versions the test is valid.

Details and discussions can be found on the slack channel.

thanks,
Robert

-
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org



Re: [SUMMARY] 3 ITs permanently fail on Linux / Maven Core

2019-08-04 Thread Robert Scholte
On Sun, 04 Aug 2019 13:06:31 +0200, Elliotte Rusty Harold  
 wrote:



This investigation and resolution of this mystery has been quite
informative. I suspect there are general principles and lessons here
about separating infrastructure for different projects that extend
well beyond Maven itself and probably beyond Jenkins. Containers might
play a role.


Using containers will isolate some issues, but I prefer to test Maven as  
it is used by its users. Even though I don't have the numbers, I still  
think most use it directly on the OS. The usage of Maven inside a  
container is probably increasing, so it does make sense if such a setup is  
possible with the infra of the ASF.




Perhaps someone would be interested in more formally publishing a full
writeup somewhere? Or perhaps delivering a lightning talk on this at
ApacheCon? This feels quite valuable for general DevOps.


This is indeed an interesting topic where one must understand how all the  
tools work, especially in a shared environment.

AFAIK all Maven related proposals were rejected for ApacheCon Europe.

Robert



On Sat, Aug 3, 2019 at 3:12 PM Robert Scholte   
wrote:


Here's a very short summary and conclusion about what happened the last
period.

Half July some integration tests of Maven started to fail, but not  
always
(it good happen that a certain JDK would succeed again with the next  
run).

At that time we only noticed:
- it failed only on the Linux nodes of Jenkins.
- the failing tests were using MAVEN_OPTS

It took quite a while, but in the end Hervé discovered the root cause:
- On some nodes there was an unexpected ${user.home}/.m2/.mavenrc file
that set the value of MAVEN_OPTS

INFRA discovered that it was the incubator-shardingsphere that created
this file when building there project.

We've provided a PR for this project together with an explanation. This  
PR

has been accepted and INFRA has removed the .mavenrc files.

Over the past weeks a lot of changes has been done to the code for
investigation.
All changes that were done to change the behavior related to  
environments

variables and mavenrc file should and will be reverted.
Mavens master branch was stable, so to ensure the right things are still
tested the need to be restored (some of them did indeed test the
MAVEN_OPTS explicitly as issued in its JIRA).
In general we don't change ITs, we only extend then and provide a range  
to

control for which Maven versions the test is valid.

Details and discussions can be found on the slack channel.

thanks,
Robert

-
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



Re: [SUMMARY] 3 ITs permanently fail on Linux / Maven Core

2019-08-04 Thread Elliotte Rusty Harold
This investigation and resolution of this mystery has been quite
informative. I suspect there are general principles and lessons here
about separating infrastructure for different projects that extend
well beyond Maven itself and probably beyond Jenkins. Containers might
play a role.

Perhaps someone would be interested in more formally publishing a full
writeup somewhere? Or perhaps delivering a lightning talk on this at
ApacheCon? This feels quite valuable for general DevOps.

On Sat, Aug 3, 2019 at 3:12 PM Robert Scholte  wrote:
>
> Here's a very short summary and conclusion about what happened the last
> period.
>
> Half July some integration tests of Maven started to fail, but not always
> (it good happen that a certain JDK would succeed again with the next run).
> At that time we only noticed:
> - it failed only on the Linux nodes of Jenkins.
> - the failing tests were using MAVEN_OPTS
>
> It took quite a while, but in the end Hervé discovered the root cause:
> - On some nodes there was an unexpected ${user.home}/.m2/.mavenrc file
> that set the value of MAVEN_OPTS
>
> INFRA discovered that it was the incubator-shardingsphere that created
> this file when building there project.
>
> We've provided a PR for this project together with an explanation. This PR
> has been accepted and INFRA has removed the .mavenrc files.
>
> Over the past weeks a lot of changes has been done to the code for
> investigation.
> All changes that were done to change the behavior related to environments
> variables and mavenrc file should and will be reverted.
> Mavens master branch was stable, so to ensure the right things are still
> tested the need to be restored (some of them did indeed test the
> MAVEN_OPTS explicitly as issued in its JIRA).
> In general we don't change ITs, we only extend then and provide a range to
> control for which Maven versions the test is valid.
>
> Details and discussions can be found on the slack channel.
>
> thanks,
> Robert
>
> -
> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> For additional commands, e-mail: dev-h...@maven.apache.org
>


-- 
Elliotte Rusty Harold
elh...@ibiblio.org

-
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org