[JIRA] [docker-plugin] (JENKINS-28886) Jenkins is not able to create dumb slave when Docker plugin installed

112 views
Skip to first unread message

ogondza@gmail.com (JIRA)

unread,
Jun 12, 2015, 7:41:02 AM6/12/15
to jenkinsc...@googlegroups.com
Oliver Gondža created an issue
 
Jenkins / Bug JENKINS-28886
Jenkins is not able to create dumb slave when Docker plugin installed
Issue Type: Bug Bug
Assignee: Kanstantsin Shautsou
Components: docker-plugin
Created: 12/Jun/15 11:40 AM
Priority: Critical Critical
Reporter: Oliver Gondža

Can be reproduced with mvn hpi:run.

javax.servlet.ServletException: java.lang.ClassCastException: hudson.slaves.SlaveComputer cannot be cast to hudson.slaves.AbstractCloudComputer
	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:783)
	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:863)
	at org.kohsuke.stapler.MetaClass$4.doDispatch(MetaClass.java:210)
	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:733)
	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:863)
	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:636)
	at org.kohsuke.stapler.Stapler.service(Stapler.java:225)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:491)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1074)
	at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96)
	at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1065)
	at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1065)
	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.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1065)
	at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1065)
	at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1065)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:185)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:689)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:391)
	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:146)
	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
	at org.mortbay.jetty.Server.handle(Server.java:285)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:457)
	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:765)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:628)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:209)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:357)
	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:329)
	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
Caused by: java.lang.ClassCastException: hudson.slaves.SlaveComputer cannot be cast to hudson.slaves.AbstractCloudComputer
	at com.nirima.jenkins.plugins.docker.strategy.DockerOnceRetentionStrategy.start(DockerOnceRetentionStrategy.java:29)
	at hudson.model.AbstractCIBase.updateComputer(AbstractCIBase.java:129)
	at hudson.model.AbstractCIBase.updateComputerList(AbstractCIBase.java:179)
	at jenkins.model.Jenkins.updateComputerList(Jenkins.java:1220)
	at jenkins.model.Jenkins.setNodes(Jenkins.java:1717)
	at jenkins.model.Jenkins.addNode(Jenkins.java:1699)
	at hudson.model.ComputerSet.doDoCreateItem(ComputerSet.java:294)
	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:120)
	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:733)
	... 39 more
Add Comment Add Comment
 
This message was sent by Atlassian JIRA (v6.4.2#64017-sha1:e244265)
Atlassian logo

ogondza@gmail.com (JIRA)

unread,
Jun 12, 2015, 7:43:01 AM6/12/15
to jenkinsc...@googlegroups.com
Oliver Gondža updated an issue
Change By: Oliver Gondža
Can be reproduced with {{mvn hpi:run}}.  Create new slave, hit save.

{noformat}
{noformat}

gentoo.integer@gmail.com (JIRA)

unread,
Jun 12, 2015, 11:17:02 AM6/12/15
to jenkinsc...@googlegroups.com
Kanstantsin Shautsou resolved as Incomplete
 

Please provide config.xml

>Create new slave, hit save.

Change By: Kanstantsin Shautsou
Status: Open Resolved
Resolution: Incomplete

o.v.nenashev@gmail.com (JIRA)

unread,
Jun 12, 2015, 12:07:02 PM6/12/15
to jenkinsc...@googlegroups.com
Oleg Nenashev commented on Bug JENKINS-28886
 
Re: Jenkins is not able to create dumb slave when Docker plugin installed

Confirmed the issue on jenkins-1.609.1 & docker-0.9.2
After setting up a cloud, any slave creation attempt fails

o.v.nenashev@gmail.com (JIRA)

unread,
Jun 12, 2015, 12:11:01 PM6/12/15
to jenkinsc...@googlegroups.com

Kostya mentioned that we create a slave with DockerOnceRetentionStrategy
BTW, it's being selected by default in "Create Slave" dialog.

gentoo.integer@gmail.com (JIRA)

unread,
Jun 12, 2015, 12:14:01 PM6/12/15
to jenkinsc...@googlegroups.com

I will try change ordinals, but it not a plugin issue that DumbSlave shows all strategies.

gentoo.integer@gmail.com (JIRA)

unread,
Jun 12, 2015, 12:15:01 PM6/12/15
to jenkinsc...@googlegroups.com

gentoo.integer@gmail.com (JIRA)

unread,
Jun 12, 2015, 12:15:02 PM6/12/15
to jenkinsc...@googlegroups.com
Kanstantsin Shautsou updated an issue
Dumb Slave shows all strategies
Change By: Kanstantsin Shautsou
Summary: Jenkins is not able to create dumb slave when Docker plugin installed Dumb Slave shows all strategies

gentoo.integer@gmail.com (JIRA)

unread,
Jun 12, 2015, 12:15:02 PM6/12/15
to jenkinsc...@googlegroups.com
Kanstantsin Shautsou reopened an issue
Change By: Kanstantsin Shautsou
Resolution: Incomplete
Status: Resolved Reopened
Assignee: Kanstantsin Shautsou

jglick@cloudbees.com (JIRA)

unread,
Jun 12, 2015, 12:15:02 PM6/12/15
to jenkinsc...@googlegroups.com

jglick@cloudbees.com (JIRA)

unread,
Jun 12, 2015, 12:16:01 PM6/12/15
to jenkinsc...@googlegroups.com
Jesse Glick edited a comment on Bug JENKINS-28886
Why is this Resolved?  (never mind: reopened now)

gentoo.integer@gmail.com (JIRA)

unread,
Jun 12, 2015, 12:16:01 PM6/12/15
to jenkinsc...@googlegroups.com

Jesse Glick because i can't change all options atomicly?

gentoo.integer@gmail.com (JIRA)

unread,
Jun 12, 2015, 12:18:01 PM6/12/15
to jenkinsc...@googlegroups.com

Imho, just filter Cloud based classes from Functions.getRetentionStrategiesDescriptors.

gentoo.integer@gmail.com (JIRA)

unread,
Jun 12, 2015, 1:06:10 PM6/12/15
to jenkinsc...@googlegroups.com

Filtering in this method will break drop-down in docker where we need all descriptors. I can suggest create additional method .getDumbSlaveRetentionStrategyDescriptors and use it for DumbSlave UI.

o.v.nenashev@gmail.com (JIRA)

unread,
Jun 12, 2015, 2:35:03 PM6/12/15
to jenkinsc...@googlegroups.com
Oleg Nenashev updated an issue
 
Change By: Oleg Nenashev
Component/s: docker-plugin
Component/s: core

o.v.nenashev@gmail.com (JIRA)

unread,
Jun 12, 2015, 2:35:04 PM6/12/15
to jenkinsc...@googlegroups.com
Oleg Nenashev commented on Bug JENKINS-28886
 
Re: Dumb Slave shows all strategies

I disagree with re-assigning the issue to the core, because users on previous LTS versions are not unable to comfortably use entire Jenkins together with this plugin.

0.9.3 is required IMO

o.v.nenashev@gmail.com (JIRA)

unread,
Jun 12, 2015, 2:37:01 PM6/12/15
to jenkinsc...@googlegroups.com
Oleg Nenashev updated an issue
DockerOnceRetentionStrategy becomes a default strategy and breaks use-cases outside docker
Change By: Oleg Nenashev
Summary: Dumb Slave shows all strategies DockerOnceRetentionStrategy becomes a default strategy and breaks use-cases outside docker

o.v.nenashev@gmail.com (JIRA)

unread,
Jun 12, 2015, 2:38:01 PM6/12/15
to jenkinsc...@googlegroups.com
 
Re: DockerOnceRetentionStrategy becomes a default strategy and breaks use-cases outside docker

Kostya, please create another issue to the core. It should be patched as well, of course

gentoo.integer@gmail.com (JIRA)

unread,
Jun 12, 2015, 2:57:02 PM6/12/15
to jenkinsc...@googlegroups.com
Kanstantsin Shautsou resolved as Won't Fix
 

I disagree that this is a docker issue. I implemented API provided by core and plugin uses all retentions.
I have no problems with DumbSlave because i'm always reading and verifying what i'm configuring.
Sorry, but i have no time so feel free to create separate issue. LTS backpoting is in process feel free to propose lts-candidate fix.

Change By: Kanstantsin Shautsou
Status: Reopened Resolved
Resolution: Won't Fix

jglick@cloudbees.com (JIRA)

unread,
Jun 12, 2015, 5:24:02 PM6/12/15
to jenkinsc...@googlegroups.com
Jesse Glick reopened an issue
 

Core is behaving as designed. There is no RetentionStrategyDescriptor.isApplicable(Node/Computer) API, so until there is, plugins may not register strategies unless they are safe to use on any node. Most cloud implementations can hardcode a single retention strategy, or offer a custom UI control which would select a strategy behind the scenes. If the Docker cloud implementation wishes to offer any strategy registered as an extension using a hetero list/radio control, and to insert additional options defined in this plugin, it can easily do so using a control-specific technique (typically setting an explicit descriptors parameter).

Change By: Jesse Glick
Resolution: Won't Fix
Status: Resolved Reopened

scm_issue_link@java.net (JIRA)

unread,
Jun 14, 2015, 1:06:09 PM6/14/15
to jenkinsc...@googlegroups.com
SCM/JIRA link daemon commented on Bug JENKINS-28886
 
Re: DockerOnceRetentionStrategy becomes a default strategy and breaks use-cases outside docker

Code changed in jenkins
User: Oliver Gondža
Path:
docker-plugin/src/main/java/com/nirima/jenkins/plugins/docker/DockerTemplate.java
docker-plugin/src/main/java/com/nirima/jenkins/plugins/docker/strategy/DockerCloudRetentionStrategy.java
docker-plugin/src/main/java/com/nirima/jenkins/plugins/docker/strategy/DockerOnceRetentionStrategy.java
docker-plugin/src/main/resources/com/nirima/jenkins/plugins/docker/DockerTemplate/config.jelly
http://jenkins-ci.org/commit/docker-plugin/395665a4ed20223119c57c3f7fb6f19740325e10
Log:
[FIXED JENKINS-28886] Do not register specific strategies

scm_issue_link@java.net (JIRA)

unread,
Jun 14, 2015, 1:06:10 PM6/14/15
to jenkinsc...@googlegroups.com

scm_issue_link@java.net (JIRA)

unread,
Jun 14, 2015, 1:06:10 PM6/14/15
to jenkinsc...@googlegroups.com

Code changed in jenkins
User: Oliver Gondža
Path:
docker-plugin/src/main/java/com/nirima/jenkins/plugins/docker/DockerTemplate.java

scm_issue_link@java.net (JIRA)

unread,
Jun 14, 2015, 1:06:13 PM6/14/15
to jenkinsc...@googlegroups.com

Code changed in jenkins
User: Kanstantsin Shautsou


Path:
docker-plugin/src/main/java/com/nirima/jenkins/plugins/docker/DockerTemplate.java
docker-plugin/src/main/java/com/nirima/jenkins/plugins/docker/strategy/DockerCloudRetentionStrategy.java
docker-plugin/src/main/java/com/nirima/jenkins/plugins/docker/strategy/DockerOnceRetentionStrategy.java
docker-plugin/src/main/resources/com/nirima/jenkins/plugins/docker/DockerTemplate/config.jelly

http://jenkins-ci.org/commit/docker-plugin/7b0855a187e24a3cfd9f280180bdedc7585e80e8
Log:
Merge pull request #247 from olivergondza/restrict-strategies

[FIXED JENKINS-28886] Do not register specific strategies

Reply all
Reply to author
Forward
0 new messages