[ 
https://issues.apache.org/jira/browse/RAT-553?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Philipp Ottlinger updated RAT-553:
----------------------------------
    Issue Type: Bug  (was: Task)

> NPE with multi-threaded builds during SCM ignore parsing (Hg/Git)
> -----------------------------------------------------------------
>
>                 Key: RAT-553
>                 URL: https://issues.apache.org/jira/browse/RAT-553
>             Project: Apache RAT
>          Issue Type: Bug
>    Affects Versions: 0.18
>            Reporter: Richard Eckart de Castilho
>            Priority: Major
>             Fix For: 1.0.0
>
>
> Hitting this intermittently with `mvn -T <N>` on a multi-module project that 
> has `.gitignore` files:
>  
> {noformat}
> NullPointerException: Cannot invoke
> "...AbstractFileProcessorBuilder$LevelBuilder.asMatcherSet()"
> because the return value of "java.util.SortedMap.get(Object)" is null
> at 
> AbstractFileProcessorBuilder.build(AbstractFileProcessorBuilder.java:133){noformat}
>  
> I've also seen what looked like a ConcurrentModificationExcepton in the past 
> from the same area — possibly the same bug.
> StandardCollection caches one GitIgnoreBuilder instance and hands it to every 
> caller. AbstractFileProcessorBuilder.levelBuilders is an instance field that 
> build() mutates and clear()s. With parallel module builds, two threads call 
> build() on the same singleton and trample each other's map — get(0) returns 
> null, or the keySet iteration in createMatcherSetList blows up with a 
> ConcurrentModificationExcepton.
> The mojo declares threadSafe = true, so Maven happily runs it in parallel — 
> but the shared mutable state in the builders means that promise isn't 
> actually true.
> (Btw. `HgIgnoreBuilder` seems to have a mutable `state` field that may have 
> the same issue.)
> I'm seeing this with 0.18. I think 0.16 still worked ok.
> Workaround that worked for me — turn off SCM ignore parsing so the racy code 
> path isn't hit:
>  
> {noformat}
> <configuration>
> <parseSCMIgnoresAsExcludes>false</parseSCMIgnoresAsExcludes>
> </configuration>{noformat}
>  
> ----
>  
> {noformat}
> Error:  Failed to execute goal org.apache.rat:apache-rat-plugin:0.18:check 
> (default) on project inception-workload: Execution default of goal 
> org.apache.rat:apache-rat-plugin:0.18:check failed: Cannot invoke 
> "org.apache.rat.config.exclusion.fileProcessors.AbstractFileProcessorBuilder$LevelBuilder.asMatcherSet()"
>  because the return value of "java.util.SortedMap.get(Object)" is null -> 
> [Help 1]
> org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute 
> goal org.apache.rat:apache-rat-plugin:0.18:check (default) on project 
> inception-workload: Execution default of goal 
> org.apache.rat:apache-rat-plugin:0.18:check failed: Cannot invoke 
> "org.apache.rat.config.exclusion.fileProcessors.AbstractFileProcessorBuilder$LevelBuilder.asMatcherSet()"
>  because the return value of "java.util.SortedMap.get(Object)" is null
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 
> (MojoExecutor.java:333)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute 
> (MojoExecutor.java:316)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:212)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:174)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 
> (MojoExecutor.java:75)
>     at org.apache.maven.lifecycle.internal.MojoExecutor$1.run 
> (MojoExecutor.java:162)
>     at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute 
> (DefaultMojosExecutionStrategy.java:39)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:159)
>     at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:105)
>     at 
> org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call
>  (MultiThreadedBuilder.java:193)
>     at 
> org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call
>  (MultiThreadedBuilder.java:180)
>     at java.util.concurrent.FutureTask.run (FutureTask.java:317)
>     at java.util.concurrent.Executors$RunnableAdapter.call 
> (Executors.java:572)
>     at java.util.concurrent.FutureTask.run (FutureTask.java:317)
>     at java.util.concurrent.ThreadPoolExecutor.runWorker 
> (ThreadPoolExecutor.java:1144)
>     at java.util.concurrent.ThreadPoolExecutor$Worker.run 
> (ThreadPoolExecutor.java:642)
>     at java.lang.Thread.run (Thread.java:1583)
> Caused by: org.apache.maven.plugin.PluginExecutionException: Execution 
> default of goal org.apache.rat:apache-rat-plugin:0.18:check failed: Cannot 
> invoke 
> "org.apache.rat.config.exclusion.fileProcessors.AbstractFileProcessorBuilder$LevelBuilder.asMatcherSet()"
>  because the return value of "java.util.SortedMap.get(Object)" is null
>     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo 
> (DefaultBuildPluginManager.java:133)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 
> (MojoExecutor.java:328)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute 
> (MojoExecutor.java:316)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:212)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:174)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 
> (MojoExecutor.java:75)
>     at org.apache.maven.lifecycle.internal.MojoExecutor$1.run 
> (MojoExecutor.java:162)
>     at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute 
> (DefaultMojosExecutionStrategy.java:39)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:159)
>     at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:105)
>     at 
> org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call
>  (MultiThreadedBuilder.java:193)
>     at 
> org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call
>  (MultiThreadedBuilder.java:180)
>     at java.util.concurrent.FutureTask.run (FutureTask.java:317)
>     at java.util.concurrent.Executors$RunnableAdapter.call 
> (Executors.java:572)
>     at java.util.concurrent.FutureTask.run (FutureTask.java:317)
>     at java.util.concurrent.ThreadPoolExecutor.runWorker 
> (ThreadPoolExecutor.java:1144)
>     at java.util.concurrent.ThreadPoolExecutor$Worker.run 
> (ThreadPoolExecutor.java:642)
>     at java.lang.Thread.run (Thread.java:1583)
> Caused by: java.lang.NullPointerException: Cannot invoke 
> "org.apache.rat.config.exclusion.fileProcessors.AbstractFileProcessorBuilder$LevelBuilder.asMatcherSet()"
>  because the return value of "java.util.SortedMap.get(Object)" is null
>     at 
> org.apache.rat.config.exclusion.fileProcessors.AbstractFileProcessorBuilder.build
>  (AbstractFileProcessorBuilder.java:133)
>     at 
> org.apache.rat.config.exclusion.ExclusionProcessor.lambda$extractFileProcessors$0
>  (ExclusionProcessor.java:232)
>     at org.apache.commons.collections4.Transformer.apply (Transformer.java:47)
>     at org.apache.commons.collections4.iterators.TransformIterator.transform 
> (TransformIterator.java:138)
>     at org.apache.commons.collections4.iterators.TransformIterator.next 
> (TransformIterator.java:102)
>     at java.util.Iterator.forEachRemaining (Iterator.java:133)
>     at org.apache.rat.utils.ExtendedIterator.forEachRemaining 
> (ExtendedIterator.java:130)
>     at 
> org.apache.rat.config.exclusion.ExclusionProcessor.extractFileProcessors 
> (ExclusionProcessor.java:234)
>     at org.apache.rat.config.exclusion.ExclusionProcessor.getNameMatcher 
> (ExclusionProcessor.java:208)
>     at org.apache.rat.ReportConfiguration.getDocumentExcluder 
> (ReportConfiguration.java:434)
>     at org.apache.rat.mp.AbstractRatMojo.getConfiguration 
> (AbstractRatMojo.java:546)
>     at org.apache.rat.mp.RatCheckMojo.getConfiguration (RatCheckMojo.java:166)
>     at org.apache.rat.mp.RatCheckMojo.execute (RatCheckMojo.java:205)
>     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo 
> (DefaultBuildPluginManager.java:126)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 
> (MojoExecutor.java:328)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute 
> (MojoExecutor.java:316)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:212)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:174)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 
> (MojoExecutor.java:75)
>     at org.apache.maven.lifecycle.internal.MojoExecutor$1.run 
> (MojoExecutor.java:162)
>     at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute 
> (DefaultMojosExecutionStrategy.java:39)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:159)
>     at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:105)
>     at 
> org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call
>  (MultiThreadedBuilder.java:193)
>     at 
> org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call
>  (MultiThreadedBuilder.java:180)
>     at java.util.concurrent.FutureTask.run (FutureTask.java:317)
>     at java.util.concurrent.Executors$RunnableAdapter.call 
> (Executors.java:572)
>     at java.util.concurrent.FutureTask.run (FutureTask.java:317)
>     at java.util.concurrent.ThreadPoolExecutor.runWorker 
> (ThreadPoolExecutor.java:1144)
>     at java.util.concurrent.ThreadPoolExecutor$Worker.run 
> (ThreadPoolExecutor.java:642)
>     at java.lang.Thread.run (Thread.java:1583)
> Error:  Failed to execute goal org.apache.rat:apache-rat-plugin:0.18:check 
> (default) on project inception-io-tei: Execution default of goal 
> org.apache.rat:apache-rat-plugin:0.18:check failed: Cannot invoke 
> "org.apache.rat.config.exclusion.fileProcessors.AbstractFileProcessorBuilder$LevelBuilder.asMatcherSet()"
>  because the return value of "java.util.SortedMap.get(Object)" is null -> 
> [Help 1]
> org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute 
> goal org.apache.rat:apache-rat-plugin:0.18:check (default) on project 
> inception-io-tei: Execution default of goal 
> org.apache.rat:apache-rat-plugin:0.18:check failed: Cannot invoke 
> "org.apache.rat.config.exclusion.fileProcessors.AbstractFileProcessorBuilder$LevelBuilder.asMatcherSet()"
>  because the return value of "java.util.SortedMap.get(Object)" is null
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 
> (MojoExecutor.java:333)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute 
> (MojoExecutor.java:316)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:212)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:174)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 
> (MojoExecutor.java:75)
>     at org.apache.maven.lifecycle.internal.MojoExecutor$1.run 
> (MojoExecutor.java:162)
>     at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute 
> (DefaultMojosExecutionStrategy.java:39)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:159)
>     at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:105)
>     at 
> org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call
>  (MultiThreadedBuilder.java:193)
>     at 
> org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call
>  (MultiThreadedBuilder.java:180)
>     at java.util.concurrent.FutureTask.run (FutureTask.java:317)
>     at java.util.concurrent.Executors$RunnableAdapter.call 
> (Executors.java:572)
>     at java.util.concurrent.FutureTask.run (FutureTask.java:317)
>     at java.util.concurrent.ThreadPoolExecutor.runWorker 
> (ThreadPoolExecutor.java:1144)
>     at java.util.concurrent.ThreadPoolExecutor$Worker.run 
> (ThreadPoolExecutor.java:642)
>     at java.lang.Thread.run (Thread.java:1583)
> Caused by: org.apache.maven.plugin.PluginExecutionException: Execution 
> default of goal org.apache.rat:apache-rat-plugin:0.18:check failed: Cannot 
> invoke 
> "org.apache.rat.config.exclusion.fileProcessors.AbstractFileProcessorBuilder$LevelBuilder.asMatcherSet()"
>  because the return value of "java.util.SortedMap.get(Object)" is null
>     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo 
> (DefaultBuildPluginManager.java:133)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 
> (MojoExecutor.java:328)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute 
> (MojoExecutor.java:316)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:212)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:174)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 
> (MojoExecutor.java:75)
>     at org.apache.maven.lifecycle.internal.MojoExecutor$1.run 
> (MojoExecutor.java:162)
>     at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute 
> (DefaultMojosExecutionStrategy.java:39)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:159)
>     at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:105)
>     at 
> org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call
>  (MultiThreadedBuilder.java:193)
>     at 
> org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call
>  (MultiThreadedBuilder.java:180)
>     at java.util.concurrent.FutureTask.run (FutureTask.java:317)
>     at java.util.concurrent.Executors$RunnableAdapter.call 
> (Executors.java:572)
>     at java.util.concurrent.FutureTask.run (FutureTask.java:317)
>     at java.util.concurrent.ThreadPoolExecutor.runWorker 
> (ThreadPoolExecutor.java:1144)
>     at java.util.concurrent.ThreadPoolExecutor$Worker.run 
> (ThreadPoolExecutor.java:642)
>     at java.lang.Thread.run (Thread.java:1583)
> Caused by: java.lang.NullPointerException: Cannot invoke 
> "org.apache.rat.config.exclusion.fileProcessors.AbstractFileProcessorBuilder$LevelBuilder.asMatcherSet()"
>  because the return value of "java.util.SortedMap.get(Object)" is null
>     at 
> org.apache.rat.config.exclusion.fileProcessors.AbstractFileProcessorBuilder.build
>  (AbstractFileProcessorBuilder.java:133)
>     at 
> org.apache.rat.config.exclusion.ExclusionProcessor.lambda$extractFileProcessors$0
>  (ExclusionProcessor.java:232)
>     at org.apache.commons.collections4.Transformer.apply (Transformer.java:47)
>     at org.apache.commons.collections4.iterators.TransformIterator.transform 
> (TransformIterator.java:138)
>     at org.apache.commons.collections4.iterators.TransformIterator.next 
> (TransformIterator.java:102)
>     at java.util.Iterator.forEachRemaining (Iterator.java:133)
>     at org.apache.rat.utils.ExtendedIterator.forEachRemaining 
> (ExtendedIterator.java:130)
>     at 
> org.apache.rat.config.exclusion.ExclusionProcessor.extractFileProcessors 
> (ExclusionProcessor.java:234)
>     at org.apache.rat.config.exclusion.ExclusionProcessor.getNameMatcher 
> (ExclusionProcessor.java:208)
>     at org.apache.rat.ReportConfiguration.getDocumentExcluder 
> (ReportConfiguration.java:434)
>     at org.apache.rat.mp.AbstractRatMojo.getConfiguration 
> (AbstractRatMojo.java:546)
>     at org.apache.rat.mp.RatCheckMojo.getConfiguration (RatCheckMojo.java:166)
>     at org.apache.rat.mp.RatCheckMojo.execute (RatCheckMojo.java:205)
>     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo 
> (DefaultBuildPluginManager.java:126)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 
> (MojoExecutor.java:328)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute 
> (MojoExecutor.java:316)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:212)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:174)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 
> (MojoExecutor.java:75)
>     at org.apache.maven.lifecycle.internal.MojoExecutor$1.run 
> (MojoExecutor.java:162)
>     at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute 
> (DefaultMojosExecutionStrategy.java:39)
>     at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:159)
>     at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
> (LifecycleModuleBuilder.java:105)
>     at 
> org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call
>  (MultiThreadedBuilder.java:193)
>     at 
> org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call
>  (MultiThreadedBuilder.java:180)
>     at java.util.concurrent.FutureTask.run (FutureTask.java:317)
>     at java.util.concurrent.Executors$RunnableAdapter.call 
> (Executors.java:572)
>     at java.util.concurrent.FutureTask.run (FutureTask.java:317)
>     at java.util.concurrent.ThreadPoolExecutor.runWorker 
> (ThreadPoolExecutor.java:1144)
>     at java.util.concurrent.ThreadPoolExecutor$Worker.run 
> (ThreadPoolExecutor.java:642)
>     at java.lang.Thread.run (Thread.java:1583){noformat}
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to