• Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • swarm-plugin
    • None

      I have the latest jenkins and when I try and start a swarm slave with:

      java -jar swarm-client-1.18-jar-with-dependencies.jar

      I get this in the master server log:

      Oct 04, 2014 1:20:11 PM WARNING org.eclipse.jetty.util.log.JavaUtilLog warn
      Error while serving http://jenkins.scropt.com//plugin/swarm/createSlave
      java.lang.reflect.InvocationTargetException
      at sun.reflect.GeneratedMethodAccessor232.invoke(Unknown Source)
      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)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:863)
      at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:248)
      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: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.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.headerComplete(AbstractHttpConnection.java:949)
      at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011)
      at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
      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:745)
      Caused by: java.lang.RuntimeException: No tool '' is defined on Jenkins.
      at hudson.plugins.swarm.PluginImpl.parseToolLocations(PluginImpl.java:98)
      at hudson.plugins.swarm.PluginImpl.doCreateSlave(PluginImpl.java:51)
      ... 55 more

          [JENKINS-24995] New Swarm Slave Wont Work

          New version being released with a fix.

          Peter Jönsson added a comment - New version being released with a fix.

          Daniel Beck added a comment -

          BTW, tool names can contain spaces – haven't tried it, but the existing tool location grammar doesn't seem to be up for that.

          Daniel Beck added a comment - BTW, tool names can contain spaces – haven't tried it, but the existing tool location grammar doesn't seem to be up for that.

          Ok good to know, didn't know that was possible.
          Meanwhile I've encountered a bigger issue, I've logged it here: https://issues.jenkins-ci.org/browse/JENKINS-25002
          I'm gonna try and work on it tonight.

          Nico Mommaerts added a comment - Ok good to know, didn't know that was possible. Meanwhile I've encountered a bigger issue, I've logged it here: https://issues.jenkins-ci.org/browse/JENKINS-25002 I'm gonna try and work on it tonight.

          Daniel Beck added a comment -

          Suggestion: Deprecate this new option (or break backwards compatibility and remove it), and replace with specifying the path to a java .properties file that contains key value pairs:

          Toolname=Location
          ...

          Passing it on the command line seems to suck too badly.


          Alternatively, just provide everything as separate arguments (which admittedly looks weird).

          --toolname1=Toolname --toollocation1=Location --toolname2=... --toollocation2=...

          Daniel Beck added a comment - Suggestion: Deprecate this new option (or break backwards compatibility and remove it), and replace with specifying the path to a java .properties file that contains key value pairs: Toolname=Location ... Passing it on the command line seems to suck too badly. Alternatively, just provide everything as separate arguments (which admittedly looks weird). --toolname1=Toolname --toollocation1=Location --toolname2=... --toollocation2=...

          I was also thinking about the properties file, but if https://issues.jenkins-ci.org/browse/JENKINS-9639 ever gets implemented, we would end up with 2 properties file. Or we would have to think of a format to put all options including the toollocations in one properties file, which would rather suck given the flat nature of properties files.

          Nico Mommaerts added a comment - I was also thinking about the properties file, but if https://issues.jenkins-ci.org/browse/JENKINS-9639 ever gets implemented, we would end up with 2 properties file. Or we would have to think of a format to put all options including the toollocations in one properties file, which would rather suck given the flat nature of properties files.

          I think https://issues.jenkins-ci.org/browse/JENKINS-9639 is more interesting. Then we could move the username/password combo into a file as well.

          Peter Jönsson added a comment - I think https://issues.jenkins-ci.org/browse/JENKINS-9639 is more interesting. Then we could move the username/password combo into a file as well.

          I've asked a question over on that issue

          Nico Mommaerts added a comment - I've asked a question over on that issue

          Regarding the spaces: there doesn't seem to be any restriction on toolname characters. So no separatorchar will be sufficient.
          The only alternative I see is using a hierarchical file format via https://issues.jenkins-ci.org/browse/JENKINS-9639 (json, xml, yml, whatnot)

          Nico Mommaerts added a comment - Regarding the spaces: there doesn't seem to be any restriction on toolname characters. So no separatorchar will be sufficient. The only alternative I see is using a hierarchical file format via https://issues.jenkins-ci.org/browse/JENKINS-9639 (json, xml, yml, whatnot)

          Daniel Beck added a comment -

          Nico: Or a format/environment that knows how to escape certain characters. Both my suggestions above (properties file and CLI) should support more or less arbitrary file names.

          Re properties files, just define it as:

          Tool.JDK7=/var/lib/...
          Tool.JDK\ 8=/var/lib/...
          ...

          and it should be extensible enough (the tool installations are called JDK7 and JDK 8, respectively, in case it's not obvious).

          There are also XML properties files, but I haven't worked with them, so I don't know whether they're more flexible.

          Daniel Beck added a comment - Nico: Or a format/environment that knows how to escape certain characters. Both my suggestions above (properties file and CLI) should support more or less arbitrary file names. Re properties files, just define it as: Tool.JDK7=/var/lib/... Tool.JDK\ 8=/var/lib/... ... and it should be extensible enough (the tool installations are called JDK7 and JDK 8 , respectively, in case it's not obvious). There are also XML properties files, but I haven't worked with them, so I don't know whether they're more flexible.

          About the properties file: indeed, didn't know you could escape chars. I'll take a shot at implementing it.
          About the CLI: atm args4j is used to parse them, I'm not sure if it supports dynamic parameters. I'll look into it but I think the properties file will be the preferred way to provide toollocations.

          Nico Mommaerts added a comment - About the properties file: indeed, didn't know you could escape chars. I'll take a shot at implementing it. About the CLI: atm args4j is used to parse them, I'm not sure if it supports dynamic parameters. I'll look into it but I think the properties file will be the preferred way to provide toollocations.

            mindjiver Peter Jönsson
            ztolley Zac Tolley
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: