Uploaded image for project: 'Maven Shared Components'
  1. Maven Shared Components
  2. MSHARED-1050

ConcurrentModificationException for maven-filtering

    XMLWordPrintableJSON

Details

    Description

      Maven filtering is not thread safe. Adding all properties from request maven session results in ConcurrentModificationException.

      Problem is line 117 (and possibly also 118):
      https://github.com/apache/maven-filtering/blob/maven-filtering-3.1.1/src/main/java/org/apache/maven/shared/filtering/BaseFilter.java

      How to simulate:

      1. use maven-resources-plugin which relies on maven-filtering
        1. maven-resources-plugin version 3.1.0
        2. maven-filtering version 3.1.1
      2. have multithreaded build (e.g. mvn package -T 48)
      3. problem does not happen all the time, but more threads improve the chances

      JDK

      Oracle JDK 1.8

      Possible cause:

      I have no clue, everything seems to be synchronized. Maybe the collection is being added to itself and that is why synchronized set wrapper did not work?

      Sample stacktrace of failed build:

      org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.1.0:resources (default-resources) on project sample-projct: Execution default-resources of goal org.apache.maven.plugins:maven-resources-plugin:3.1.0:resources failed.
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
          at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
          at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:196)
          at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:186)
          at java.util.concurrent.FutureTask.run (FutureTask.java:266)
          at java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:511)
          at java.util.concurrent.FutureTask.run (FutureTask.java:266)
          at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:624)
          at java.lang.Thread.run (Thread.java:748)
      Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-resources of goal org.apache.maven.plugins:maven-resources-plugin:3.1.0:resources failed.
          at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:148)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
          at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
          at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:196)
          at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:186)
          at java.util.concurrent.FutureTask.run (FutureTask.java:266)
          at java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:511)
          at java.util.concurrent.FutureTask.run (FutureTask.java:266)
          at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:624)
          at java.lang.Thread.run (Thread.java:748)
      Caused by: java.util.ConcurrentModificationException
          at java.util.Hashtable$Enumerator.next (Hashtable.java:1387)
          at java.util.Hashtable.putAll (Hashtable.java:523)
          at org.apache.maven.shared.filtering.BaseFilter.getDefaultFilterWrappers (BaseFilter.java:117)
          at org.apache.maven.shared.filtering.DefaultMavenFileFilter.getDefaultFilterWrappers (DefaultMavenFileFilter.java:53)
          at org.apache.maven.shared.filtering.DefaultMavenResourcesFiltering.handleDefaultFilterWrappers (DefaultMavenResourcesFiltering.java:269)
          at org.apache.maven.shared.filtering.DefaultMavenResourcesFiltering.filterResources (DefaultMavenResourcesFiltering.java:132)
          at org.apache.maven.plugins.resources.ResourcesMojo.execute (ResourcesMojo.java:345)
          at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
          at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
          at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:196)
          at org.apache.maven.lifecycle.internal.builder.multithreaded.MultiThreadedBuilder$1.call (MultiThreadedBuilder.java:186)
          at java.util.concurrent.FutureTask.run (FutureTask.java:266)
          at java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:511)
          at java.util.concurrent.FutureTask.run (FutureTask.java:266)
          at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:624)
          at java.lang.Thread.run (Thread.java:748)

      Attachments

        Issue Links

          Activity

            People

              gnodet Guillaume Nodet
              lacike Ladislav Lencucha
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: