Re: plugin:descriptor fails with java.util.NoSuchElementException

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: plugin:descriptor fails with java.util.NoSuchElementException

rfscholte
At builds.apache.org:
Java version: 1.7.0_79, vendor: Oracle Corporation

Local
Java version: 1.7.0_80, vendor: Oracle Corporation

does seem to be Java7 only...
I need to check this for a longer period, but might be a good conclusion.

thanks,
Robert


On Thu, 29 Nov 2018 04:54:59 +0100, Gabriel Belingueres  
<[hidden email]> wrote:

> Hi Robert:
>
> I'm testing it and getting *consistently* the same exception with this
> config:
>
> Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3;
> 2018-10-24T15:41:47-03:00)
> Maven home: C:\productos\apache-maven-3.6.0\bin\..
> Java version: 1.7.0_80, vendor: Oracle Corporation, runtime: C:\Program
> Files\Java\jdk1.7.0_80\jre
> Default locale: es_AR, platform encoding: Cp1252
> OS name: "windows 8.1", version: "6.3", arch: "amd64", family: "windows"
>
> (actually it is a win 10 but it fails to recognze it).
>
> It works OK when remote debugging with mvnDebug.
>
> Don't know why throws a NoSuchElementException when trying to remove an
> element on a non empty LinkedList...my best guess is that it is some sort
> of bug in the hotspot optimization of the JVM.
>
> Which Java 7 specific update is running on Jenkins?
>
> Gabriel
>
> El mar., 27 de nov. de 2018 a la(s) 17:52, Robert Scholte (
> [hidden email]) escribió:
>
>> Hi,
>>
>> sometimes the maven-plugin-plugin fails to write the plugin descriptor
>> and
>> exits with the exception below.
>> I see the same unreliable behavior on our Jenkins servers too,  
>> re-running
>> often fixes the issue.
>> I have seen the issue several times locally when running with mvn.cmd,  
>> so
>> far never with mvnDebug.cmd and always running with default #threads.
>> I can't find a reason why elementStack[1] gets out of sync.
>>
>> If there are others experiencing the same or similar issues, please  
>> share
>> your analysis.
>> Hopefully we can solve this instability issue soon.
>>
>> thanks,
>> Robert
>>
>> [1]
>>
>> http://codehaus-plexus.github.io/plexus-utils/xref/org/codehaus/plexus/util/xml/PrettyPrintXMLWriter.html#L40
>>
>>
>>
>> [ERROR] Failed to execute goal
>> org.apache.maven.plugins:maven-plugin-plugin:3.5.2:descriptor
>> (default-descriptor) on project maven-javadoc-plugin: Execution
>> default-descriptor of goal
>> org.apache.maven.plugins:maven-plugin-plugin:3.5.2:descriptor failed.
>> NoSuchElementException -> [Help 1]
>> org.apache.maven.lifecycle.LifecycleExecutionException: Failed to  
>> execute
>> goal org.apache.maven.plugins:maven-plugin-plugin:3.5.2:descriptor
>> (default-descriptor) on project maven-javadoc-plugin: Execution
>> default-descriptor of goal
>> org.apache.maven.plugins:maven-plugin-plugin:3.5.2:descriptor failed
>>
>>
>>
>> Caused by: java.util.NoSuchElementException
>>      at java.util.LinkedList.removeLast (LinkedList.java:281)
>>      at org.codehaus.plexus.util.xml.PrettyPrintXMLWriter.endElement
>> (PrettyPrintXMLWriter.java:297)
>>      at
>> org.apache.maven.tools.plugin.generator.PluginDescriptorGenerator.writeDescriptor
>>
>> (PluginDescriptorGenerator.java:175)
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [hidden email]
>> For additional commands, e-mail: [hidden email]
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: plugin:descriptor fails with java.util.NoSuchElementException

Enrico Olivelli
+1 for Tibor's explanation.
Enrico

Il sab 8 dic 2018, 12:29 Tibor Digana <[hidden email]> ha scritto:

> PluginDescriptorGenerator.writeDescriptor does not use Threads so it must
> be the problem that the number of calls "endElement" is greater than calls
> "startElement".
>
> https://github.com/apache/maven-plugin-tools/blob/master/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java
>
>
> On Sat, Dec 8, 2018 at 11:46 AM Tibor Digana <[hidden email]>
> wrote:
>
> > I do not think it can be such JVM issue with string concatenations,
> > otherwise
> > all the world has the same problem.
> > This type of issue is usually caused by multiple writes from multiple
> > threads.
> > Try to log every method with Thread id and we should see multiple ids.
> > The java.io is supposed to be synchronized and thread safe. Therefore
> > PrintWriter is a wrapper of thread safe implementations.
> > We should use ConcurrentLinkedList and identify large functionality. If
> > large methods changes status at multiple lines, then this is a critical
> > section and the class must be synchronized.
> >
> > Cheers
> > Tibor
> >
> >
> >
> >
> > --
> > Sent from:
> http://maven.40175.n5.nabble.com/Maven-Developers-f142166.html
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [hidden email]
> > For additional commands, e-mail: [hidden email]
> >
> >
>
--


-- Enrico Olivelli
Reply | Threaded
Open this post in threaded view
|

Re: plugin:descriptor fails with java.util.NoSuchElementException

rfscholte
I have to admit that it still looks weird, but the open and close tags are  
balanced.
Also notice that only Java 7 (sometimes) hits this issue.
Gabriel was able to provide a test that always fails on Java 7, not on the  
other JDKs.
It must have to do with optimization when the JVM is warmed up.

Anyway, the provided patch takes away the failures and the writing to the  
stream is now cleaner too.
You might want to dive into this, but I wonder if it is worth it.
Issue will be resolved with the next release.

thanks,
Robert

On Sat, 08 Dec 2018 12:44:40 +0100, Enrico Olivelli <[hidden email]>  
wrote:

> +1 for Tibor's explanation.
> Enrico
>
> Il sab 8 dic 2018, 12:29 Tibor Digana <[hidden email]> ha  
> scritto:
>
>> PluginDescriptorGenerator.writeDescriptor does not use Threads so it  
>> must
>> be the problem that the number of calls "endElement" is greater than  
>> calls
>> "startElement".
>>
>> https://github.com/apache/maven-plugin-tools/blob/master/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java
>>
>>
>> On Sat, Dec 8, 2018 at 11:46 AM Tibor Digana <[hidden email]>
>> wrote:
>>
>> > I do not think it can be such JVM issue with string concatenations,
>> > otherwise
>> > all the world has the same problem.
>> > This type of issue is usually caused by multiple writes from multiple
>> > threads.
>> > Try to log every method with Thread id and we should see multiple ids.
>> > The java.io is supposed to be synchronized and thread safe. Therefore
>> > PrintWriter is a wrapper of thread safe implementations.
>> > We should use ConcurrentLinkedList and identify large functionality.  
>> If
>> > large methods changes status at multiple lines, then this is a  
>> critical
>> > section and the class must be synchronized.
>> >
>> > Cheers
>> > Tibor
>> >
>> >
>> >
>> >
>> > --
>> > Sent from:
>> http://maven.40175.n5.nabble.com/Maven-Developers-f142166.html
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: [hidden email]
>> > For additional commands, e-mail: [hidden email]
>> >
>> >

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: plugin:descriptor fails with java.util.NoSuchElementException

Tibor Digana
One more hint. What if the start element was added as NULL by an accident?
What if the impl of LinkedList ignores such element and then there are N -
1 elements to remove.
Adding an asset may help to find it.

On Sun, Dec 9, 2018 at 8:00 PM Tibor Digana <[hidden email]> wrote:

> I have checked everything, including the commit hash, the change, trigger
> and log.
> It's undeterministic run as you said.
> What happens if you simply use ArrayDeque instead of LinkedList?
> How can we identify it's the problem of strings conc and List impl?
> Perhaps only by giving a try several times and avoid influence after these
> tests.
>
>
> On Sun, Dec 9, 2018 at 6:29 PM Robert Scholte <[hidden email]>
> wrote:
>
>> For your interest, just hit it again:
>>
>>
>> https://builds.apache.org/job/maven-box/job/maven-javadoc-plugin/job/MJAVADOC-543/
>>
>> First run only fails for Build windows-jdk7-m3.2.x_build, with the
>> j.u.NoSuchElementException
>> A rerun without any changes,now it luckily succeeds.
>>
>> Robert
>>
>> On Sun, 09 Dec 2018 17:35:45 +0100, Tibor Digana <[hidden email]>
>>
>> wrote:
>>
>> > Is the issue found on Oracle Jira or bug report?
>> > This might to do with some build version in Java 1.7. Usually they fix
>> it
>> > right after since this bug hits the JVM stability and Oracle is paying
>> an
>> > attention to JIT stability.
>> >
>> >
>> >
>> > On Sun, Dec 9, 2018 at 4:36 PM Robert Scholte <[hidden email]>
>> > wrote:
>> >
>> >> I have to admit that it still looks weird, but the open and close tags
>> >> are
>> >> balanced.
>> >> Also notice that only Java 7 (sometimes) hits this issue.
>> >> Gabriel was able to provide a test that always fails on Java 7, not on
>> >> the
>> >> other JDKs.
>> >> It must have to do with optimization when the JVM is warmed up.
>> >>
>> >> Anyway, the provided patch takes away the failures and the writing to
>> >> the
>> >> stream is now cleaner too.
>> >> You might want to dive into this, but I wonder if it is worth it.
>> >> Issue will be resolved with the next release.
>> >>
>> >> thanks,
>> >> Robert
>> >>
>> >> On Sat, 08 Dec 2018 12:44:40 +0100, Enrico Olivelli
>> >> <[hidden email]>
>> >>
>> >> wrote:
>> >>
>> >> > +1 for Tibor's explanation.
>> >> > Enrico
>> >> >
>> >> > Il sab 8 dic 2018, 12:29 Tibor Digana <[hidden email]> ha
>> >> > scritto:
>> >> >
>> >> >> PluginDescriptorGenerator.writeDescriptor does not use Threads so it
>> >> >> must
>> >> >> be the problem that the number of calls "endElement" is greater than
>> >> >> calls
>> >> >> "startElement".
>> >> >>
>> >> >>
>> >>
>> https://github.com/apache/maven-plugin-tools/blob/master/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java
>> >> >>
>> >> >>
>> >> >> On Sat, Dec 8, 2018 at 11:46 AM Tibor Digana <
>> [hidden email]>
>> >> >> wrote:
>> >> >>
>> >> >> > I do not think it can be such JVM issue with string
>> concatenations,
>> >> >> > otherwise
>> >> >> > all the world has the same problem.
>> >> >> > This type of issue is usually caused by multiple writes from
>> >> multiple
>> >> >> > threads.
>> >> >> > Try to log every method with Thread id and we should see
>> multiple
>> >> ids.
>> >> >> > The java.io is supposed to be synchronized and thread safe.
>> >> Therefore
>> >> >> > PrintWriter is a wrapper of thread safe implementations.
>> >> >> > We should use ConcurrentLinkedList and identify large
>> >> functionality.
>> >> >> If
>> >> >> > large methods changes status at multiple lines, then this is a
>> >> >> critical
>> >> >> > section and the class must be synchronized.
>> >> >> >
>> >> >> > Cheers
>> >> >> > Tibor
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> > --
>> >> >> > Sent from:
>> >> >> http://maven.40175.n5.nabble.com/Maven-Developers-f142166.html
>> >> >> >
>> >> >> >
>> >> ---------------------------------------------------------------------
>> >> >> > To unsubscribe, e-mail: [hidden email]
>> >> >> > For additional commands, e-mail: [hidden email]
>> >> >> >
>> >> >> >
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: [hidden email]
>> >> For additional commands, e-mail: [hidden email]
>> >>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [hidden email]
>> For additional commands, e-mail: [hidden email]
>>
>>