-
Bug
-
Resolution: Unresolved
-
Major
-
None
-
Powered by SuggestiMate
1. View your build pipeline
2. Open your web console
Expected:
- One or two AJAX requests at a time
Actual:
- 1200+ were executing.
Adding the ajax requests to a queue and aborting duplicates/using setTimeOut to delay execution by 50ms would fix this
[JENKINS-22184] Javascript performance of build pipeline plugin is poor
Also, with the refresh frequency = 0; the moment an error occurs things go ugly.
It took a while, but here's exception that caused it to loop.
Stack trace
java.lang.IllegalArgumentException: Failed to instantiate int from {"cause":null,"localizedMessage":"","message":"","stackTrace":[
{"className":"au.com.centrumsystems.hudson.plugin.buildpipeline.BuildPipelineView","fileName":"BuildPipelineView.java","lineNumber":508,"methodName":"triggerBuild","nativeMethod":false},
{"className":"au.com.centrumsystems.hudson.plugin.buildpipeline.BuildPipelineView","fileName":"BuildPipelineView.java","lineNumber":411,"methodName":"triggerManualBuild","nativeMethod":false},
{"className":"sun.reflect.NativeMethodAccessorImpl","fileName":"NativeMethodAccessorImpl.java","lineNumber":-2,"methodName":"invoke0","nativeMethod":true},
{"className":"sun.reflect.NativeMethodAccessorImpl","fileName":"NativeMethodAccessorImpl.java","lineNumber":57,"methodName":"invoke","nativeMethod":false},
{"className":"sun.reflect.DelegatingMethodAccessorImpl","fileName":"DelegatingMethodAccessorImpl.java","lineNumber":43,"methodName":"invoke","nativeMethod":false},
{"className":"java.lang.reflect.Method","fileName":"Method.java","lineNumber":606,"methodName":"invoke","nativeMethod":false},
{"className":"org.kohsuke.stapler.Function$InstanceFunction","fileName":"Function.java","lineNumber":298,"methodName":"invoke","nativeMethod":false},
{"className":"org.kohsuke.stapler.Function","fileName":"Function.java","lineNumber":161,"methodName":"bindAndInvoke","nativeMethod":false},
{"className":"org.kohsuke.stapler.Function","fileName":"Function.java","lineNumber":96,"methodName":"bindAndInvokeAndServeResponse","nativeMethod":false},
{"className":"org.kohsuke.stapler.MetaClass$JavaScriptProxyMethodDispatcher","fileName":"MetaClass.java","lineNumber":465,"methodName":"doDispatch","nativeMethod":false},
{"className":"org.kohsuke.stapler.NameBasedDispatcher","fileName":"NameBasedDispatcher.java","lineNumber":53,"methodName":"dispatch","nativeMethod":false},
{"className":"org.kohsuke.stapler.Stapler","fileName":"Stapler.java","lineNumber":728,"methodName":"tryInvoke","nativeMethod":false},
{"className":"org.kohsuke.stapler.Stapler","fileName":"Stapler.java","lineNumber":858,"methodName":"invoke","nativeMethod":false},
{"className":"org.kohsuke.stapler.MetaClass$12","fileName":"MetaClass.java","lineNumber":390,"methodName":"dispatch","nativeMethod":false},
{"className":"org.kohsuke.stapler.Stapler","fileName":"Stapler.java","lineNumber":728,"methodName":"tryInvoke","nativeMethod":false},
{"className":"org.kohsuke.stapler.Stapler","fileName":"Stapler.java","lineNumber":858,"methodName":"invoke","nativeMethod":false},
{"className":"org.kohsuke.stapler.Stapler","fileName":"Stapler.java","lineNumber":795,"methodName":"tryInvoke","nativeMethod":false},
{"className":"org.kohsuke.stapler.Stapler","fileName":"Stapler.java","lineNumber":858,"methodName":"invoke","nativeMethod":false},
{"className":"org.kohsuke.stapler.Stapler","fileName":"Stapler.java","lineNumber":631,"methodName":"invoke","nativeMethod":false},
{"className":"org.kohsuke.stapler.Stapler","fileName":"Stapler.java","lineNumber":186,"methodName":"service","nativeMethod":false},
{"className":"javax.servlet.http.HttpServlet","fileName":"HttpServlet.java","lineNumber":848,"methodName":"service","nativeMethod":false},
{"className":"org.eclipse.jetty.servlet.ServletHolder","fileName":"ServletHolder.java","lineNumber":686,"methodName":"handle","nativeMethod":false},
{"className":"org.eclipse.jetty.servlet.ServletHandler$CachedChain","fileName":"ServletHandler.java","lineNumber":1494,"methodName":"doFilter","nativeMethod":false},
{"className":"hudson.util.PluginServletFilter$1","fileName":"PluginServletFilter.java","lineNumber":96,"methodName":"doFilter","nativeMethod":false},
{"className":"hudson.plugins.greenballs.GreenBallFilter","fileName":"GreenBallFilter.java","lineNumber":58,"methodName":"doFilter","nativeMethod":false},
{"className":"hudson.util.PluginServletFilter$1","fileName":"PluginServletFilter.java","lineNumber":99,"methodName":"doFilter","nativeMethod":false},
{"className":"hudson.util.PluginServletFilter","fileName":"PluginServletFilter.java","lineNumber":88,"methodName":"doFilter","nativeMethod":false},
{"className":"org.eclipse.jetty.servlet.ServletHandler$CachedChain","fileName":"ServletHandler.java","lineNumber":1482,"methodName":"doFilter","nativeMethod":false},
{"className":"hudson.security.csrf.CrumbFilter","fileName":"CrumbFilter.java","lineNumber":48,"methodName":"doFilter","nativeMethod":false},
{"className":"org.eclipse.jetty.servlet.ServletHandler$CachedChain","fileName":"ServletHandler.java","lineNumber":1482,"methodName":"doFilter","nativeMethod":false},
{"className":"hudson.security.ChainedServletFilter$1","fileName":"ChainedServletFilter.java","lineNumber":84,"methodName":"doFilter","nativeMethod":false},
{"className":"hudson.security.ChainedServletFilter","fileName":"ChainedServletFilter.java","lineNumber":76,"methodName":"doFilter","nativeMethod":false},
{"className":"hudson.security.HudsonFilter","fileName":"HudsonFilter.java","lineNumber":164,"methodName":"doFilter","nativeMethod":false},
{"className":"org.eclipse.jetty.servlet.ServletHandler$CachedChain","fileName":"ServletHandler.java","lineNumber":1482,"methodName":"doFilter","nativeMethod":false},
{"className":"org.kohsuke.stapler.compression.CompressionFilter","fileName":"CompressionFilter.java","lineNumber":46,"methodName":"doFilter","nativeMethod":false},
{"className":"org.eclipse.jetty.servlet.ServletHandler$CachedChain","fileName":"ServletHandler.java","lineNumber":1482,"methodName":"doFilter","nativeMethod":false},
{"className":"hudson.util.CharacterEncodingFilter","fileName":"CharacterEncodingFilter.java","lineNumber":81,"methodName":"doFilter","nativeMethod":false},
{"className":"org.eclipse.jetty.servlet.ServletHandler$CachedChain","fileName":"ServletHandler.java","lineNumber":1474,"methodName":"doFilter","nativeMethod":false},
{"className":"org.eclipse.jetty.servlet.ServletHandler","fileName":"ServletHandler.java","lineNumber":499,"methodName":"doHandle","nativeMethod":false},
{"className":"org.eclipse.jetty.server.handler.ScopedHandler","fileName":"ScopedHandler.java","lineNumber":137,"methodName":"handle","nativeMethod":false},
{"className":"org.eclipse.jetty.security.SecurityHandler","fileName":"SecurityHandler.java","lineNumber":533,"methodName":"handle","nativeMethod":false},
{"className":"org.eclipse.jetty.server.session.SessionHandler","fileName":"SessionHandler.java","lineNumber":231,"methodName":"doHandle","nativeMethod":false},
{"className":"org.eclipse.jetty.server.handler.ContextHandler","fileName":"ContextHandler.java","lineNumber":1086,"methodName":"doHandle","nativeMethod":false},
{"className":"org.eclipse.jetty.servlet.ServletHandler","fileName":"ServletHandler.java","lineNumber":428,"methodName":"doScope","nativeMethod":false},
{"className":"org.eclipse.jetty.server.session.SessionHandler","fileName":"SessionHandler.java","lineNumber":193,"methodName":"doScope","nativeMethod":false},
{"className":"org.eclipse.jetty.server.handler.ContextHandler","fileName":"ContextHandler.java","lineNumber":1020,"methodName":"doScope","nativeMethod":false},
{"className":"org.eclipse.jetty.server.handler.ScopedHandler","fileName":"ScopedHandler.java","lineNumber":135,"methodName":"handle","nativeMethod":false},
{"className":"org.eclipse.jetty.server.handler.HandlerWrapper","fileName":"HandlerWrapper.java","lineNumber":116,"methodName":"handle","nativeMethod":false},
{"className":"org.eclipse.jetty.server.Server","fileName":"Server.java","lineNumber":370,"methodName":"handle","nativeMethod":false},
{"className":"org.eclipse.jetty.server.AbstractHttpConnection","fileName":"AbstractHttpConnection.java","lineNumber":489,"methodName":"handleRequest","nativeMethod":false},
{"className":"org.eclipse.jetty.server.AbstractHttpConnection","fileName":"AbstractHttpConnection.java","lineNumber":960,"methodName":"content","nativeMethod":false},
{"className":"org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler","fileName":"AbstractHttpConnection.java","lineNumber":1021,"methodName":"content","nativeMethod":false},
{"className":"org.eclipse.jetty.http.HttpParser","fileName":"HttpParser.java","lineNumber":865,"methodName":"parseNext","nativeMethod":false},
{"className":"org.eclipse.jetty.http.HttpParser","fileName":"HttpParser.java","lineNumber":235,"methodName":"parseAvailable","nativeMethod":false},
{"className":"org.eclipse.jetty.server.AsyncHttpConnection","fileName":"AsyncHttpConnection.java","lineNumber":82,"methodName":"handle","nativeMethod":false},
{"className":"org.eclipse.jetty.io.nio.SelectChannelEndPoint","fileName":"SelectChannelEndPoint.java","lineNumber":668,"methodName":"handle","nativeMethod":false},
{"className":"org.eclipse.jetty.io.nio.SelectChannelEndPoint$1","fileName":"SelectChannelEndPoint.java","lineNumber":52,"methodName":"run","nativeMethod":false},
{"className":"winstone.BoundedExecutorService$1","fileName":"BoundedExecutorService.java","lineNumber":77,"methodName":"run","nativeMethod":false},
{"className":"java.util.concurrent.ThreadPoolExecutor","fileName":"ThreadPoolExecutor.java","lineNumber":1145,"methodName":"runWorker","nativeMethod":false},
{"className":"java.util.concurrent.ThreadPoolExecutor$Worker","fileName":"ThreadPoolExecutor.java","lineNumber":615,"methodName":"run","nativeMethod":false},
{"className":"java.lang.Thread","fileName":"Thread.java","lineNumber":724,"methodName":"run","nativeMethod":false}],"suppressed":[]}at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:589)at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:400)at org.kohsuke.stapler.MetaClass$JavaScriptProxyMethodDispatcher.doDispatch(MetaClass.java:463)at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)at org.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:390)at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:795)at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)at org.kohsuke.stapler.Stapler.invoke(Stapler.java:631)at org.kohsuke.stapler.Stapler.service(Stapler.java:186)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:96)at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:58)at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46)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: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:235)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:724)Caused by: org.kohsuke.stapler.NoStaplerConstructorException: There's no @DataBoundConstructor on any constructor of intat org.kohsuke.stapler.ClassDescriptor.loadConstructorParamNames(ClassDescriptor.java:176)at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:671)at org.kohsuke.stapler.RequestImpl.access$100(RequestImpl.java:81)at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:587)... 53 more
updateNextBuildAndShowProgress : function(id, nextBuildNumber, dependencies) {
{ buildPipeline.showProgress(id, dependencies); clearInterval(intervalId); }var buildPipeline = this;
//try to get the updated build, that's not pending
var intervalId = setInterval(function(){
buildPipeline.buildProxies[id].updatePipelineBuild(nextBuildNumber, function(updated){
if (updated.responseObject())
});
}, buildPipeline.refreshFrequency);
},
... should be buildPipeline.refreshFrequency || someSaneDefault