Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-24995

New Swarm Slave Wont Work

    XMLWordPrintable

Details

    Description

      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

      Attachments

        Issue Links

          Activity

            ztolley Zac Tolley created issue -
            danielbeck Daniel Beck made changes -
            Field Original Value New Value
            Link This issue is related to JENKINS-7543 [ JENKINS-7543 ]

            Code changed in jenkins
            User: nico.mommaerts
            Path:
            plugin/src/main/java/hudson/plugins/swarm/PluginImpl.java
            http://jenkins-ci.org/commit/swarm-plugin/e3bcd9c5ef89466d989d2fd7a6720e5e16e82a84
            Log:
            JENKINS-24995 fixed exception when not passing any toollocations

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: nico.mommaerts Path: plugin/src/main/java/hudson/plugins/swarm/PluginImpl.java http://jenkins-ci.org/commit/swarm-plugin/e3bcd9c5ef89466d989d2fd7a6720e5e16e82a84 Log: JENKINS-24995 fixed exception when not passing any toollocations
            mindjiver Peter Jönsson made changes -
            Status Open [ 1 ] In Progress [ 3 ]
            mindjiver Peter Jönsson made changes -
            Assignee Kohsuke Kawaguchi [ kohsuke ] Peter Jönsson [ mindjiver ]

            New version being released with a fix.

            mindjiver Peter Jönsson added a comment - New version being released with a fix.
            mindjiver Peter Jönsson made changes -
            Resolution Fixed [ 1 ]
            Status In Progress [ 3 ] Resolved [ 5 ]
            danielbeck 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.

            danielbeck 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.

            mr_dfuse 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.
            danielbeck 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=...

            danielbeck 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.

            mr_dfuse 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.

            mindjiver 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

            mr_dfuse 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)

            mr_dfuse 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)
            danielbeck 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.

            danielbeck 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.

            mr_dfuse 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 made changes -
            Status Resolved [ 5 ] Closed [ 6 ]
            rtyler R. Tyler Croy made changes -
            Workflow JNJira [ 158891 ] JNJira + In-Review [ 208100 ]

            People

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

              Dates

                Created:
                Updated:
                Resolved: