-
Bug
-
Resolution: Fixed
-
Minor
The POST action of config.xml to /computer on 'master' node doesn't work.
If I go to "/computer/(master)/api" page, it says that the config.xml can be fetched and updated but it doesn't work that way.
I just took a look at the code and it looks like the "replaceBy(Node newNode)" function on "core/src/main/java/hudson/model/Computer.java" uses the "getNodes()" function defined in "core/src/main/java/jenkins/model/Jenkins.java" which returns only the slaves and NOT the master. Is it an expected behavior? Shouldn't we be able to POST config.xml to master node? It has a lot of options that can be customized and posting the config.xml will help greatly.
[JENKINS-16264] Posting config.xml to master node advertised to work
Description |
Original:
The POST action of config.xml to /computer on 'master' node doesn't work. If I go to "/computer/(master)/api" page, it says that the config.xml can be fetched and updated but it doesn't work that way. I just took a look at the code and it looks like the "replaceBy(Node newNode)" function on "core/src/main/java/hudson/model/Computer.java"uses the "getNodes()" function defined in "core/src/main/java/jenkins/model/Jenkins.java" which returns only the slaves and NOT the master. Is it an expected behavior? Shouldn't we be able to POST config.xml to master node? It has a lot of options that can be customized and posting the config.xml will help greatly. |
New:
The POST action of config.xml to /computer on 'master' node doesn't work. If I go to "/computer/(master)/api" page, it says that the config.xml can be fetched and updated but it doesn't work that way. I just took a look at the code and it looks like the "replaceBy(Node newNode)" function on "core/src/main/java/hudson/model/Computer.java" uses the "getNodes()" function defined in "core/src/main/java/jenkins/model/Jenkins.java" which returns only the slaves and NOT the master. Is it an expected behavior? Shouldn't we be able to POST config.xml to master node? It has a lot of options that can be customized and posting the config.xml will help greatly. |
Priority | Original: Blocker [ 1 ] | New: Minor [ 4 ] |
Summary | Original: Posting config.xml to master node doesn't work | New: Posting config.xml to master node advertised to work |
The following is the error message from the POST to 'master' node.
Status Code: 500
Exception: This slave appears to be removed while you were editing the configuration
Stacktrace:
java.io.IOException: This slave appears to be removed while you were editing the configuration
at hudson.model.Computer.replaceBy(Computer.java:1206)
at hudson.model.Computer.doConfigDotXml(Computer.java:1187)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:288)
at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:151)
at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:90)
at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:111)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:573)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:658)
at org.kohsuke.stapler.MetaClass$12.dispatch(MetaClass.java:384)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:573)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:658)
at org.kohsuke.stapler.MetaClass$4.doDispatch(MetaClass.java:203)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:573)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:658)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:487)
at org.kohsuke.stapler.Stapler.service(Stapler.java:164)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:45)
at winstone.ServletConfiguration.execute(ServletConfiguration.java:248)
at winstone.RequestDispatcher.forward(RequestDispatcher.java:333)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:376)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:95)
at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:87)
at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:47)
at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
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 org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:124)
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 org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.java:63)
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:66)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:50)
at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
at winstone.RequestDispatcher.forward(RequestDispatcher.java:331)
at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:215)
at winstone.RequestHandlerThread.run(RequestHandlerThread.java:138)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)