bertramdev / asset-pipeline

The core implementation of the asset pipeline for the jvm
192 stars 90 forks source link

java.util.ConcurrentModificationException when running AssetCompile in parallel #305

Open musketyr opened 1 year ago

musketyr commented 1 year ago

If there are multiple assetCompile tasks running in parallel then they may fail with a following error. I assume the issue is that the resolvers are hold in the static field.

Caused by: java.util.ConcurrentModificationException: (No message provided) 
at asset.pipeline.AssetHelper.fileForUri(AssetHelper.groovy:50) 
at asset.pipeline.AssetHelper.fileForUri(AssetHelper.groovy)    
at asset.pipeline.AssetHelper$fileForUri$8.call(Unknown Source) 
at asset.pipeline.processors.AbstractUrlRewritingProcessor.replacementUrl(AbstractUrlRewritingProcessor.groovy:74)  
at asset.pipeline.processors.HtmlProcessor$_process_closure1.doCall(HtmlProcessor.groovy:64)    
at asset.pipeline.processors.HtmlProcessor.process(HtmlProcessor.groovy:51) 
at asset.pipeline.Processor$process.call(Unknown Source)    
at asset.pipeline.Processor$process.call(Unknown Source)    
at asset.pipeline.AbstractAssetFile.processedStream(AbstractAssetFile.groovy:171)   
at asset.pipeline.AbstractAssetFile.processedStream(AbstractAssetFile.groovy)   
at asset.pipeline.DirectiveProcessor.fileContents(DirectiveProcessor.groovy:305)    
at asset.pipeline.DirectiveProcessor$fileContents$1.callCurrent(Unknown Source) 
at asset.pipeline.DirectiveProcessor$fileContents$1.callCurrent(Unknown Source) 
at asset.pipeline.DirectiveProcessor.loadContentsForTree(DirectiveProcessor.groovy:127) 
at asset.pipeline.DirectiveProcessor.compile(DirectiveProcessor.groovy:65)  
at asset.pipeline.DirectiveProcessor$compile$0.call(Unknown Source) 
at asset.pipeline.DirectiveProcessor$compile$0.call(Unknown Source) 
at asset.pipeline.AssetCompiler$_compile_closure4.doCall(AssetCompiler.groovy:160)