Closed krische closed 5 years ago
This is the same issue (and fix) that the Job DSL Plugin had:
Hi @krische ,
Found the issue - wrong groovy version was being picked up due to classloader - fix was some classloading config changes ("plugin first" and mask groovy.grape
).
Any chance you can give the following snapshot (with fix) a go, to verify the fix on your end? (if all's well, then we'll close the ticket) https://github.com/jenkinsci/groovy-events-listener-plugin/releases/tag/1.015-SNAPSHOT
Kind regards, Nick
The 1.015-SNAPSHOT build works for me.
Hi, @nickgrealy! I remember that I removed
- pluginFirstClassLoader = true
- maskClasses = 'groovy groovyjarjarantlr groovyjarjarasm groovyjarjarcommonscli org.codehaus.groovy'
because I fixed another issues - importing classes from third side plugins. I.e. from Build Failure Analyse Plugin
import com.sonyericsson.jenkins.plugins.bfa.model.FailureCauseBuildAction;
Can you check that this stuff still work?
(@nickgrealy, sorry for delay, I was on vacation :) )
I checked. It doesn't work in 1.015. Code that I used:
import com.sonyericsson.jenkins.plugins.bfa.model.FailureCauseBuildAction;
log.info("Fired event '${event}'.")
log.info("1")
if (event == Event.JOB_FINALIZED) {
def build = Thread.currentThread().executable
def bfaAction = build.getAction(FailureCauseBuildAction.class)
if (bfaAction != null) {
for(def cause : bfaAction.getFailureCauseDisplayData().getFoundFailureCauses()) {
log.info(cause.getName())
log.info(cause.getCategories().join(','))
}
}
log.info(run.getExecutor().getOwner().getNode().getNodeName())
log.info("Log size: " + build.getLogFile().length())
}
Stacktrace I got:
javax.servlet.ServletException: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
script14708154415941572805709.groovy: 2: unable to resolve class com.sonyericsson.jenkins.plugins.bfa.model.FailureCauseBuildAction
@ line 2, column 1.
import com.sonyericsson.jenkins.plugins.bfa.model.FailureCauseBuildAction;
^
1 error
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:796)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132)
at jenkins.metrics.impl.MetricsFilter.doFilter(MetricsFilter.java:125)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:129)
at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:123)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:49)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:370)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
script14708154415941572805709.groovy: 2: unable to resolve class com.sonyericsson.jenkins.plugins.bfa.model.FailureCauseBuildAction
@ line 2, column 1.
import com.sonyericsson.jenkins.plugins.bfa.model.FailureCauseBuildAction;
^
1 error
at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:946)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:593)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:542)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:254)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:211)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:221)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrap.invoke(PojoMetaMethodSite.java:213)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:56)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
at org.jenkinsci.plugins.globalEventsPlugin.GlobalEventsPlugin$DescriptorImpl.getScriptReadyToBeExecuted(GlobalEventsPlugin.groovy:172)
at org.jenkinsci.plugins.globalEventsPlugin.GlobalEventsPlugin$DescriptorImpl.update(GlobalEventsPlugin.groovy:190)
at org.jenkinsci.plugins.globalEventsPlugin.GlobalEventsPlugin$DescriptorImpl.configure(GlobalEventsPlugin.groovy:195)
at jenkins.model.Jenkins.configureDescriptor(Jenkins.java:2932)
at jenkins.model.Jenkins.doConfigSubmit(Jenkins.java:2895)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298)
at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161)
at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)
at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:121)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
... 61 more
Thanks @jimilian for the info (hope you had a great holiday!).
Yeh had a go this morning, and was able to reproduce your issue.
Still looking for a solution that fixes both scenarios. I was toying with the following ideas, what are your thoughts?
Cheers, Nick
I also ran into this bug and the prerelease fixes it for me.
Any chance the prerelease could become a full release? It would make automated deployment a bit easier.
Steps to reproduce
@Grab
to the script. For example:@Grab('org.codehaus.groovy.modules.http-builder:http-builder:0.7.1')
Expected behaviour
I would expect the
@Grab
to work. Or if there is some additional configuration required of Jenkins or the computer running Jenkins, that should be documented.Actual behaviour
I receive a
java.lang.NoClassDefFoundError: org/apache/ivy/core/settings/IvySettings
exception when adding a@Grab
to my script. Here is the full stacktrace:Server configuration
Operating system: CentOS 7
Jenkins Version: 2.11
Plugin Version: 1.014