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

Remote call on CLI channel from [ip] failed

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • cli, groovy-plugin
    • None
    • Jenkins 1.446, Linux CentOS

      I've had a KillStuckPolling.groovy job running for about 6 months without problems, but on January 4th it stopped working with the below stack trace. This matches with the release of Jenkins 1.446, which is currently installed. I have tried to restart the server without any effect.

      Killing all stuck SCM polls using ~/bin/KillStuckPolling.groovy
      log4j:WARN No appenders could be found for logger (org.apache.commons.beanutils.converters.BooleanConverter).
      log4j:WARN Please initialize the log4j system properly.
      java.io.IOException: Remote call on CLI channel from /[ip] failed
      	at hudson.remoting.Channel.call(Channel.java:690)
      	at hudson.cli.GroovyCommand.loadScript(GroovyCommand.java:106)
      	at hudson.cli.GroovyCommand.run(GroovyCommand.java:93)
      	at hudson.cli.CLICommand.main(CLICommand.java:205)
      	at hudson.cli.CliManagerImpl.main(CliManagerImpl.java:66)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      	at java.lang.reflect.Method.invoke(Unknown Source)
      	at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:274)
      	at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:255)
      	at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:215)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
      	at hudson.remoting.Request$2.run(Request.java:287)
      	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
      	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
      	at java.util.concurrent.FutureTask.run(Unknown Source)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      	at java.lang.Thread.run(Unknown Source)
      Caused by: java.lang.ExceptionInInitializerError
      	at java.io.ObjectStreamClass.hasStaticInitializer(Native Method)
      	at java.io.ObjectStreamClass.computeDefaultSUID(Unknown Source)
      	at java.io.ObjectStreamClass.access$100(Unknown Source)
      	at java.io.ObjectStreamClass$1.run(Unknown Source)
      	at java.security.AccessController.doPrivileged(Native Method)
      	at java.io.ObjectStreamClass.getSerialVersionUID(Unknown Source)
      	at java.io.ObjectStreamClass.initNonProxy(Unknown Source)
      	at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
      	at java.io.ObjectInputStream.readClassDesc(Unknown Source)
      	at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
      	at java.io.ObjectInputStream.readObject0(Unknown Source)
      	at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
      	at java.io.ObjectInputStream.readSerialData(Unknown Source)
      	at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
      	at java.io.ObjectInputStream.readObject0(Unknown Source)
      	at java.io.ObjectInputStream.readObject(Unknown Source)
      	at hudson.remoting.UserRequest.deserialize(UserRequest.java:182)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:98)
      	... 8 more
      Caused by: java.lang.NullPointerException
      	at hudson.cli.CLICommand.<clinit>(CLICommand.java:448)
      	... 26 more
      Build step 'Execute shell' marked build as failure
      

      The groovy script is as follows:

      KillStuckPolling.groovy
       Thread.getAllStackTraces().keySet().each() { 
         item ->
         println "Checking item" + item.getName();
         if (item.getName().contains("SCM polling") && item.getName().contains("waiting for hudson.remoting")) { 
           println "   Interrupting thread " + item.getId(); 
           item.interrupt() 
         }
       }
      

      And the bash script used to start it is as follows

      KillStuckPolling.sh
      #!/bin/bash -e
      echo "## Kills stuck polling jobs on Jenkins"
      
      if [ -z "$JENKINS_URL" ]; then
        echo "ERROR: This script must be run on Jenkins. It cannot be run manually"
        exit 1
      fi
      
      echo "Getting latest Jenkins CLI from ${JENKINS_URL}"
      if [ -w jenkins-cli.jar ]; then
        rm jenkins-cli.jar
      fi
      wget ${JENKINS_URL}jnlpJars/jenkins-cli.jar
      echo "Killing all stuck SCM polls using ~/bin/KillStuckPolling.groovy"
      java -jar jenkins-cli.jar -s ${JENKINS_URL}/ groovy ~/bin/KillStuckPolling.groovy
      

            vjuranek vjuranek
            mabahj Markus
            Votes:
            6 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved: