-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Minor
-
Component/s: nexus-platform-plugin
-
Environment:Nexus-platform-plugin: 3.9.20200722-164144.e3a1be0
Jenkins: 2.263
A symlink inside a node_modules folder is causing infinite recursion.
The particular setup is when a subfolder contains a test project referencing the root project.
Â
Would there be any issues of not following symlinks to retrieve the scan targets?
Â
Adding file exclusions with iqModuleExcludes doesn't work since the whole file tree is still walked.
Possible modification
See here for a first draft of a possible fix: https://github.com/jenkinsci/nexus-platform-plugin/compare/master...lrpg:master
Workaround
- Drop the symlinks before the scan and put them back after
- or Change the project structure (which isn't an option in some cases)
Stack traces
Extra info: Here are some stack traces about the OOM:08:52:14 ERROR: WARNING: An error happened during the Sonatype Nexus iQ analysis 08:52:14 java.lang.OutOfMemoryError: GC overhead limit exceeded 08:52:14 at java.lang.String.toCharArray(String.java:2899) 08:52:14 at org.codehaus.plexus.util.MatchPatterns.matches(SourceFile:41) 08:52:14 at org.codehaus.plexus.util.AbstractScanner.isExcluded(SourceFile:352) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:502) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 at org.codehaus.plexus.util.DirectoryScanner.scandir(SourceFile:490) 08:52:14 Caused: java.io.IOException: Remote call on i-0c6e393b629e5e54d failed 08:52:14 at hudson.remoting.Channel.call(Channel.java:1007) 08:52:14 at hudson.remoting.VirtualChannel$call$13.call(Unknown Source) 08:52:14 at org.sonatype.nexus.ci.iq.IqPolicyEvaluatorUtil.evaluatePolicy(IqPolicyEvaluatorUtil.groovy:73) 08:52:14 at org.sonatype.nexus.ci.iq.IqPolicyEvaluatorUtil$evaluatePolicy.call(Unknown Source) 08:52:14 at org.sonatype.nexus.ci.iq.PolicyEvaluatorExecution.run(PolicyEvaluatorExecution.groovy:50) 08:52:14 at org.sonatype.nexus.ci.iq.PolicyEvaluatorExecution.run(PolicyEvaluatorExecution.groovy) 08:52:14 at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47) 08:52:14 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 08:52:14 at java.util.concurrent.FutureTask.run(FutureTask.java:266) 08:52:14 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 08:52:14 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 08:52:14 at java.lang.Thread.run(Thread.java:748)11:04:24 ERROR: WARNING: An error happened during the Sonatype Nexus iQ analysis 11:04:24 java.lang.OutOfMemoryError: GC overhead limit exceeded 11:04:24 at sun.reflect.GeneratedConstructorAccessor68.newInstance(Unknown Source) 11:04:24 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 11:04:24 at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 11:04:24 at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83) 11:04:24 at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105) 11:04:24 at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:255) 11:04:24 at org.sonatype.nexus.ci.iq.RemoteScanner$_getScanTargets_closure1.doCall(RemoteScanner.groovy:95) 11:04:24 at sun.reflect.GeneratedMethodAccessor82.invoke(Unknown Source) 11:04:24 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 11:04:24 at java.lang.reflect.Method.invoke(Method.java:498) 11:04:24 at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) 11:04:24 at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 11:04:24 at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294) 11:04:24 at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022) 11:04:24 at groovy.lang.Closure.call(Closure.java:414) 11:04:24 at groovy.lang.Closure.call(Closure.java:430) 11:04:24 at org.codehaus.groovy.runtime.DefaultGroovyMethods.collect(DefaultGroovyMethods.java:3156) 11:04:24 at org.codehaus.groovy.runtime.DefaultGroovyMethods.collect(DefaultGroovyMethods.java:3127) 11:04:24 at org.codehaus.groovy.runtime.dgm$66.invoke(Unknown Source) 11:04:24 at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:274) 11:04:24 at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:56) 11:04:24 at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) 11:04:24 at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) 11:04:24 at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) 11:04:24 at org.sonatype.nexus.ci.iq.RemoteScanner.getScanTargets(RemoteScanner.groovy:94) 11:04:24 at org.sonatype.nexus.ci.iq.RemoteScanner$getScanTargets.callCurrent(Unknown Source) 11:04:24 at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52) 11:04:24 at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154) 11:04:24 at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:174) 11:04:24 at org.sonatype.nexus.ci.iq.RemoteScanner.call(RemoteScanner.groovy:80) 11:04:24 at org.sonatype.nexus.ci.iq.RemoteScanner.call(RemoteScanner.groovy) 11:04:24 at hudson.remoting.UserRequest.perform(UserRequest.java:211) 11:04:24 Caused: java.io.IOException: Remote call on i-0896ae1be2c41e74e failed 11:04:24 at hudson.remoting.Channel.call(Channel.java:1007) 11:04:24 at hudson.remoting.VirtualChannel$call$11.call(Unknown Source) 11:04:24 at org.sonatype.nexus.ci.iq.IqPolicyEvaluatorUtil.evaluatePolicy(IqPolicyEvaluatorUtil.groovy:73) 11:04:24 at org.sonatype.nexus.ci.iq.IqPolicyEvaluatorUtil$evaluatePolicy.call(Unknown Source) 11:04:24 at org.sonatype.nexus.ci.iq.PolicyEvaluatorExecution.run(PolicyEvaluatorExecution.groovy:50)