title: Jenkins Slave Shows as Offline
body: <p>I have inherited Jenkins form a previous co-worker. Unfortunately, he did this without bringing anyone else on it, so my knowledge of Jenkins is nothing more than writing scripts and throwing them up in the dashboard. I apologize upfront for missing something if I did.</p>
  
  <p>I noticed this week that a couple of reports weren't coming in. When I jumped on the Jenkins dashboard, <a href="https://i.stack.imgur.com/74lto.png" rel="nofollow noreferrer">it shows that the slave is offline</a>. I logged into the Windows server where the Jenkins slave is installed, I tried to run the exe, and get this error:</p>
  
  <p><a href="https://i.stack.imgur.com/fdS1n.png" rel="nofollow noreferrer">Unable to Run Jenkins-Slave.exe</a></p>
  
  <p>So that's when I checked out the services, and found out that the Jenkins service wasn't running. I tried to run it, and I get this error:</p>
  
  <p><a href="https://i.stack.imgur.com/QQ1zt.png" rel="nofollow noreferrer">Unable to Run Jenkins Slave Service</a></p>
  
  <p>Because I don't really understand the ins and outs of this, I'm not too sure how to fix it. I tried restarting the server where the slave is located as well as restarting the master, but I don't get any change. </p>
  
  <p>Again, I'm not too savvy with this, so any help would be greatly appreciated!</p>
  
  <p><strong>Edit:</strong> Requested by commentors, this is the information I am seeing from the logs. Looking at the <em>slave.out.log</em>, all I am seeing is this repeating: </p>
  
  <p><code>Both error and output logs will be printed to C:\Temp\JenkinsSlave\remoting</code></p>
  
  <p>I am seeing this in the <em>slave.err.log</em>. These are the last entries in there. They are the exact same logs that were in the log file located at <em>C:\Temp\JenkinsSlave\remoting</em>:</p>
  
  <p><code>Jul 28, 2018 7:01:46 PM hudson.remoting.jnlp.Main$CuiListener status
  INFO: Connecting to jenkinsmaster:61069
  Jul 28, 2018 7:01:46 PM hudson.remoting.jnlp.Main$CuiListener status
  INFO: Server reports protocol JNLP4-plaintext not supported, skipping
  Jul 28, 2018 7:01:46 PM hudson.remoting.jnlp.Main$CuiListener status
  INFO: Server reports protocol JNLP3-connect not supported, skipping
  Jul 28, 2018 7:01:46 PM hudson.remoting.jnlp.Main$CuiListener status
  INFO: Server reports protocol JNLP2-connect not supported, skipping
  Jul 28, 2018 7:01:46 PM hudson.remoting.jnlp.Main$CuiListener status
  INFO: Server reports protocol JNLP-connect not supported, skipping
  Jul 28, 2018 7:01:46 PM hudson.remoting.jnlp.Main$CuiListener error
  SEVERE: The server rejected the connection: None of the protocols were accepted
  java.lang.Exception: The server rejected the connection: None of the protocols were accepted
      at hudson.remoting.Engine.onConnectionRejected(Engine.java:655)
      at hudson.remoting.Engine.innerRun(Engine.java:619)
      at hudson.remoting.Engine.run(Engine.java:455)</code></p>
  
  <p><strong>Edit 1:</strong> So I was able to bring the slave back online thanks to @MichaelPowers. This was done by performing step 4 in this documentation: <a href="https://wiki.jenkins.io/display/JENKINS/Step+by+step+guide+to+set+up+master+and+slave+machines+on+Windows" rel="nofollow noreferrer">How to Setup a node</a>. This worked to bring the slave back online, but I am still unable to run jobs tied to the slave. In the logs, I am seeing this:</p>
  
  <p>`</p>
  
  <pre><code>Aug 06, 2018 1:20:43 PM hudson.remoting.UserRequest perform
  WARNING: LinkageError while performing UserRequest:hudson.util.RemotingDiagnostics$GetThreadDump@df9d05
  java.lang.LinkageError: Failed to load hudson.init.InitMilestone
      at hudson.remoting.RemoteClassLoader.loadClassFile(RemoteClassLoader.java:389)
      at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:307)
      at java.lang.ClassLoader.loadClass(Unknown Source)
      at java.lang.ClassLoader.loadClass(Unknown Source)
      at hudson.util.RemotingDiagnostics$GetThreadDump.call(RemotingDiagnostics.java:98)
      at hudson.util.RemotingDiagnostics$GetThreadDump.call(RemotingDiagnostics.java:95)
      at hudson.remoting.UserRequest.perform(UserRequest.java:212)
      at hudson.remoting.UserRequest.perform(UserRequest.java:54)
      at hudson.remoting.Request$2.run(Request.java:369)
      at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
      at java.util.concurrent.FutureTask.run(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at hudson.remoting.Engine$1.lambda$newThread$0(Engine.java:93)
      at java.lang.Thread.run(Unknown Source)
  Caused by: java.lang.NoClassDefFoundError: org/jvnet/hudson/reactor/Milestone
      at java.lang.ClassLoader.defineClass1(Native Method)
      at java.lang.ClassLoader.defineClass(Unknown Source)
      at java.lang.ClassLoader.defineClass(Unknown Source)
      at hudson.remoting.RemoteClassLoader.loadClassFile(RemoteClassLoader.java:383)
      ... 14 more
  Caused by: java.lang.ClassNotFoundException: org.jvnet.hudson.reactor.Milestone
      at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:317)
      at java.lang.ClassLoader.loadClass(Unknown Source)
      at java.lang.ClassLoader.loadClass(Unknown Source)
      ... 18 more
  Caused by: java.nio.file.AccessDeniedException: C:\Temp\JenkinsSlave\remoting\jarCache\1D\802F741B5EFFEF0E027F560ADF37AB.jar
      at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
      at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
      at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
      at sun.nio.fs.WindowsFileAttributeViews$Basic.setFileTimes(Unknown Source)
      at sun.nio.fs.WindowsFileAttributeViews$Basic.setTimes(Unknown Source)
      at java.nio.file.Files.setLastModifiedTime(Unknown Source)
      at hudson.remoting.FileSystemJarCache.lookInCache(FileSystemJarCache.java:77)
      at hudson.remoting.JarCacheSupport.resolve(JarCacheSupport.java:46)
      at hudson.remoting.ResourceImageInJar._resolveJarURL(ResourceImageInJar.java:90)
      at hudson.remoting.ResourceImageInJar.resolve(ResourceImageInJar.java:43)
      at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:304)
      ... 20 more`
  </code></pre>
  
  <p>Is there another way to update the slave?</p>
  
  <p>I am also getting this in an email from the failed jobs:</p>
  
  <pre><code>`java.lang.ClassNotFoundException: org.jenkinsci.plugins.gitclient.Git$1
          at java.net.URLClassLoader.findClass(Unknown Source)
          at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
          at java.lang.ClassLoader.loadClass(Unknown Source)
          at com.sun.jnlp.JNLPClassLoader.loadClass(Unknown Source)
          at java.lang.ClassLoader.loadClass(Unknown Source)
          at java.lang.Class.forName0(Native Method)
          at java.lang.Class.forName(Unknown Source)
          at java.io.ObjectInputStream.resolveClass(Unknown Source)
          at hudson.remoting.MultiClassLoaderSerializer$Input.resolveClass(MultiClassLoaderSerializer.java:134)
          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:291)
          at hudson.remoting.UserRequest.perform(UserRequest.java:190)
  Also:   hudson.remoting.Channel$CallSiteStackTrace: Remote call to JNLP4-connect connection from fhiscripts1.fhi.com/10.1.1.126:62844
                  at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1741)
                  at hudson.remoting.UserRequest$ExceptionResponse.retrieve(UserRequest.java:357)
                  at hudson.remoting.Channel.call(Channel.java:955)
                  at hudson.FilePath.act(FilePath.java:1036)
                  at hudson.FilePath.act(FilePath.java:1025)
                  at org.jenkinsci.plugins.gitclient.Git.getClient(Git.java:137)
                  at hudson.plugins.git.GitSCM.createClient(GitSCM.java:821)
                  at hudson.plugins.git.GitSCM.createClient(GitSCM.java:812)
                  at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1180)
                  at hudson.scm.SCM.checkout(SCM.java:504)
                  at hudson.model.AbstractProject.checkout(AbstractProject.java:1208)
                  at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574)
                  at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
                  at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499)
                  at hudson.model.Run.execute(Run.java:1798)
                  at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
                  at hudson.model.ResourceController.execute(ResourceController.java:97)
                  at hudson.model.Executor.run(Executor.java:429)
  Caused: java.lang.ClassNotFoundException: Failed to deserialize the Callable object. Perhaps you needed to implement DelegatingCallable?
          at hudson.remoting.UserRequest.perform(UserRequest.java:192)
          at hudson.remoting.UserRequest.perform(UserRequest.java:54)
          at hudson.remoting.Request$2.run(Request.java:369)
          at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
          at java.util.concurrent.FutureTask.run(Unknown Source)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
          at hudson.remoting.Engine$1.lambda$newThread$0(Engine.java:93)
          at java.lang.Thread.run(Unknown Source)
  Caused: java.io.IOException: Remote call on JNLP4-connect connection from fhiscripts1.fhi.com/10.1.1.126:62844 failed
          at hudson.remoting.Channel.call(Channel.java:959)
          at hudson.FilePath.act(FilePath.java:1036)
          at hudson.FilePath.act(FilePath.java:1025)
          at org.jenkinsci.plugins.gitclient.Git.getClient(Git.java:137)
          at hudson.plugins.git.GitSCM.createClient(GitSCM.java:821)
          at hudson.plugins.git.GitSCM.createClient(GitSCM.java:812)
          at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1180)
          at hudson.scm.SCM.checkout(SCM.java:504)
          at hudson.model.AbstractProject.checkout(AbstractProject.java:1208)
          at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574)
          at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
          at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499)
          at hudson.model.Run.execute(Run.java:1798)
          at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
          at hudson.model.ResourceController.execute(ResourceController.java:97)
          at hudson.model.Executor.run(Executor.java:429)`
  </code></pre>
  
  <p><strong>Final Edit:</strong></p>
  
  <p>Good news, I guess that once the was able to bring the slave back online, all I needed to do was to update the plugins. I went to <strong>Manage Jenkins > Manage Plugins</strong> and was able to update all of the plugins that were in need of it. After the restart, I was able to run jobs tied to the slave without issue. </p>
  
  <p>Thanks again for the help! </p>