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

Support unix protocol for connection

XMLWordPrintable

    • Icon: Improvement Improvement
    • Resolution: Fixed
    • Icon: Major Major
    • docker-plugin
    • None

      For Docker URL I have entered unix:///var/run/docker.sock based on guesses. (There is no inline help to guide me.) Test Connection reports an error

      org.apache.commons.beanutils.ConversionException: unknown protocol: unix
      	at org.kohsuke.stapler.Stapler$4.convert(Stapler.java:1107)
      	at org.kohsuke.stapler.AnnotationHandler.convert(AnnotationHandler.java:66)
      	at org.kohsuke.stapler.QueryParameter$HandlerImpl.parse(QueryParameter.java:74)
      	at org.kohsuke.stapler.QueryParameter$HandlerImpl.parse(QueryParameter.java:62)
      	at org.kohsuke.stapler.AnnotationHandler.handle(AnnotationHandler.java:91)
      	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:153)
      	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:728)
      	at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
      	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:728)
      	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: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.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:240)
      	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:1142)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      	at java.lang.Thread.run(Thread.java:744)
      Caused by: java.net.MalformedURLException: unknown protocol: unix
      	at java.net.URL.<init>(URL.java:593)
      	at java.net.URL.<init>(URL.java:483)
      	at java.net.URL.<init>(URL.java:432)
      	at org.kohsuke.stapler.Stapler$4.convert(Stapler.java:1105)
      	... 55 more
      

      and if I ignore this and create a project tied to the cloud's label and schedule it, every few seconds I get

      Jun 03, 2014 9:07:50 PM com.nirima.jenkins.plugins.docker.DockerCloud provision
      INFO: Excess workload after pending Spot instances: 1
      Jun 03, 2014 9:07:50 PM com.nirima.jenkins.plugins.docker.DockerCloud connect
      INFO: Building connection to docker host test URL unix:///var/run/docker.sock
      Jun 03, 2014 9:07:50 PM org.glassfish.jersey.filter.LoggingFilter log
      INFO: 22 * Sending client request on thread jenkins.util.Timer [#4]
      22 > GET unix:/var/run/docker.sock/images/evarga/json
      
      Jun 03, 2014 9:07:50 PM com.nirima.jenkins.plugins.docker.DockerCloud provision
      WARNING: Failed to count the # of live instances on Docker
      javax.ws.rs.ProcessingException: java.net.MalformedURLException: unknown protocol: unix
      	at org.glassfish.jersey.client.HttpUrlConnector.apply(HttpUrlConnector.java:184)
      	at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:227)
      	at org.glassfish.jersey.client.JerseyInvocation$3.call(JerseyInvocation.java:693)
      	at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
      	at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
      	at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
      	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:422)
      	at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:689)
      	at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:405)
      	at org.glassfish.jersey.client.proxy.WebResourceFactory.invoke(WebResourceFactory.java:318)
      	at com.sun.proxy.$Proxy51.inspectImage(Unknown Source)
      	at com.nirima.docker.client.DockerClient$Image.inspect(DockerClient.java:473)
      	at com.nirima.jenkins.plugins.docker.DockerCloud.addProvisionedSlave(DockerCloud.java:203)
      	at com.nirima.jenkins.plugins.docker.DockerCloud.provision(DockerCloud.java:120)
      	at hudson.slaves.NodeProvisioner.update(NodeProvisioner.java:281)
      	at hudson.slaves.NodeProvisioner.access$000(NodeProvisioner.java:51)
      	at hudson.slaves.NodeProvisioner$NodeProvisionerInvoker.doRun(NodeProvisioner.java:368)
      	at hudson.triggers.SafeTimerTask.run(SafeTimerTask.java:54)
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
      	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
      	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
      	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      	at java.lang.Thread.run(Thread.java:744)
      Caused by: java.net.MalformedURLException: unknown protocol: unix
      	at java.net.URL.<init>(URL.java:593)
      	at java.net.URL.<init>(URL.java:483)
      	at java.net.URL.<init>(URL.java:432)
      	at java.net.URI.toURL(URI.java:1089)
      	at org.glassfish.jersey.client.HttpUrlConnector._apply(HttpUrlConnector.java:212)
      	at org.glassfish.jersey.client.HttpUrlConnector.apply(HttpUrlConnector.java:182)
      	... 24 more
      

      Running on Ubuntu 14.04 with Docker installed (docker ps and so on work fine), running various Jenkins versions including 1.566 on Java 7, with the current 0.3.5 plugin.

      Is there some trick to making this plugin work with a local connection? What is supposed to be registering the unix URL protocol?

            magnayn magnayn
            jglick Jesse Glick
            Votes:
            0 Vote for this issue
            Watchers:
            10 Start watching this issue

              Created:
              Updated:
              Resolved: