Tried an example code I found on GitHub. It fails excactly the same.
It cannot serialize my class implementation of the FileCallable

import java.util.*;
import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;

import hudson.FilePath.FileCallable;
import hudson.remoting.VirtualChannel;
import org.jenkinsci.remoting.RoleChecker

public class RemoteListDir implements FileCallable< Set<String> > { 
  private static final long serialVersionUID = 1452212500874165127L;

  public RemoteListDir() {}
  public Set<String> invoke(File workspace, VirtualChannel channel) throws 
IOException {
    manager.listener.logger.println "RemoteListDir invoke"
    Collection<File> list = FileUtils.listFiles(workspace, null, true);
    Set<String> set = new HashSet<String>();
    for(File file : list) {
      String relativePath = 
FolderDiff.getRelativeName(file.getAbsolutePath(), 
workspace.getAbsolutePath());
      set.add(relativePath);
    }
    return set;
  }

  @Override
  public void checkRoles(RoleChecker checker) throws SecurityException {
   
  }
}

def project = manager.build.getProject()
def someWorkspace = project.getSomeWorkspace()
manager.listener.logger.println "Trying FileCallable on workspace " + 
someWorkspace

try {
  def files = someWorkspace.act(new RemoteListDir());
  files.each { file ->
    manager.listener.logger.println file
  }
} catch (IOException e) {
  e.printStackTrace(manager.listener.logger);
} catch (InterruptedException e) {
  e.printStackTrace(manager.listener.logger);
}


java.io.IOException: remote file operation failed: 
/home/build/jenkins/workspace/myLib-test/SLAVE_NODES/Development-opensuse-x86_64
 at hudson.remoting.Channel@76706a10:Development-opensuse-x86_64: 
java.io.IOException: Remote call on Development-opensuse-x86_64 failed
>       at hudson.FilePath.act(FilePath.java:985)
>       at hudson.FilePath.act(FilePath.java:967)
>       at hudson.FilePath$act.call(Unknown Source)
>       at 
> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
>       at 
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
>       at 
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
>       at Script1.run(Script1.groovy:38)
>       at groovy.lang.GroovyShell.evaluate(GroovyShell.java:580)
>       at groovy.lang.GroovyShell.evaluate(GroovyShell.java:618)
>       at groovy.lang.GroovyShell.evaluate(GroovyShell.java:589)
>       at 
> org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript.evaluate(SecureGroovyScript.java:166)
>       at 
> org.jvnet.hudson.plugins.groovypostbuild.GroovyPostbuildRecorder.perform(GroovyPostbuildRecorder.java:361)
>       at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
>       at 
> hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:761)
>       at 
> hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:721)
>       at hudson.model.Build$BuildExecution.post2(Build.java:183)
>       at 
> hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:670)
>       at hudson.model.Run.execute(Run.java:1766)
>       at hudson.matrix.MatrixRun.run(MatrixRun.java:146)
>       at hudson.model.ResourceController.execute(ResourceController.java:98)
>       at hudson.model.Executor.run(Executor.java:374)
> Caused by: java.io.IOException: Remote call on Development-opensuse-x86_64 
> failed
>       at hudson.remoting.Channel.call(Channel.java:761)
>       at hudson.FilePath.act(FilePath.java:978)
>       ... 20 more
> Caused by: java.lang.Error: Failed to deserialize the Callable object.
>       at hudson.remoting.UserRequest.perform(UserRequest.java:105)
>       at hudson.remoting.UserRequest.perform(UserRequest.java:49)
>       at hudson.remoting.Request$2.run(Request.java:325)
>       at 
> hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
>       at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>       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)
>       at ......remote call to Development-opensuse-x86_64(Native Method)
>       at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1360)
>       at hudson.remoting.UserResponse.retrieve(UserRequest.java:221)
>       at hudson.remoting.Channel.call(Channel.java:753)
>       ... 21 more
> Caused by: java.lang.IllegalArgumentException: Unable to locate class file 
> for class RemoteListDir
>       at hudson.remoting.Which.classFileUrl(Which.java:60)
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-dev/ee305b0f-dc8a-4d9b-aee9-deeb0c871156%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to