0

We have a Jenkins CI server (and a number of slaves) running on Windows machines. Our code repository is located in StarTeam (separate StarTeam server) which we poll frequently. Normally this works well!

However, every so often we see an IOException - remote operation failed (see below) which fails a build and thrashes the check-in history which makes it impossible to determine who checked-in what during the sub-sequent build. I need help in finding out why we keep seeing these errors:

Below is an example of the error, where the build is performed on a slave node:

    Fjernbygger på machinename (...) in workspace ... 
    java.io.IOException: remote file operation failed: (workspacename) at hudson.remoting.Channel@849755:machinename 
    at hudson.FilePath.act(FilePath.java:916) 
    at hudson.FilePath.act(FilePath.java:893) 
    at hudson.plugins.starteam.StarTeamSCM.checkout(StarTeamSCM.java:131) 
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1251) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:604) 
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:513) 
    at hudson.model.Run.execute(Run.java:1706) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) 
    at hudson.model.ResourceController.execute(ResourceController.java:88) 
    at hudson.model.Executor.run(Executor.java:231) 
    Caused by: java.io.IOException: Remote call on machinename failed 
    at hudson.remoting.Channel.call(Channel.java:748) 
    at hudson.FilePath.act(FilePath.java:909) 
    ... 10 more 
    Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.borland.starteam.impl.util.Platform 
    at com.borland.starteam.impl.ClientContext.(Unknown Source) 
    at com.borland.starteam.impl.Server.(Unknown Source) 
    at com.starbase.starteam.Server.(Unknown Source) 
    at hudson.plugins.starteam.StarTeamConnection.initialize(StarTeamConnection.java:196) 
    at hudson.plugins.starteam.StarTeamCheckoutActor.invoke(StarTeamCheckoutActor.java:131) 
    at hudson.plugins.starteam.StarTeamCheckoutActor.invoke(StarTeamCheckoutActor.java:30) 
    at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2474) 
    at hudson.remoting.UserRequest.perform(UserRequest.java:118) 
    at hudson.remoting.UserRequest.perform(UserRequest.java:48) 
    at hudson.remoting.Request$2.run(Request.java:326) 
    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$1.run(Engine.java:58) 
    at java.lang.Thread.run(Unknown Source) 

Is this related to Jenkins not being able to poll the starteam server? Is this related to a misconfiguration of the starteam plugin on the slave? The starteam client (2008 R2 I believe?) is installed on the master and on slave nodes. In addition I've also followed the instructions on this post regarding copying files to web-inf location on master node.

I need pointers as to where I should start looking for answers which would then hopefully shed more information. Let me know if there are vital details that I need to provide in order to clarify the question.

EDIT

This and this looks somewhat related. My issue is also resolved by rebooting the slave/restarting the Jenkins service running on them. So is this an issue because I'm running Jenkins as a service on the slave nodes? The service is running with the same user credentials on the slaves as on the master node. Or this is related to different JRE environments on the machines?

Community
  • 1
  • 1
llykke
  • 253
  • 2
  • 14

1 Answers1

2

The NoClassDefFoundError tells us the problem is to do with the starteam jars on your classpath. The problem will either be the location / existance of the jars, or the version of them.

Check you have both the starteam and starteam-bridge jars (if you have the bridge jar at all) in your web-inf/lib folder and that you don't have multiple copies / versions of the jar dotted around on your classpath.

Another solution may be to use a newer version of the starteam jars. I haven't seen jenkins running against starteam 2008R2 so a newer jar might be needed for the jenkins plugin (the newer jar would be backwards compatible with your server).

Paul Adamson
  • 2,011
  • 2
  • 18
  • 22