[JIRA] [tfs-plugin] (JENKINS-33193) UnsatisfiedLinkError after a Windows agent's service fails to restart

12 views
Skip to first unread message

olivida@microsoft.com (JIRA)

unread,
Feb 27, 2016, 3:42:01 PM2/27/16
to jenkinsc...@googlegroups.com
Olivier Dagenais created an issue
 
Jenkins / Bug JENKINS-33193
UnsatisfiedLinkError after a Windows agent's service fails to restart
Issue Type: Bug Bug
Assignee: Olivier Dagenais
Components: tfs-plugin
Created: 27/Feb/16 8:41 PM
Priority: Minor Minor
Reporter: Olivier Dagenais

Steps to reproduce:

  1. Queue a build with TFVC against a specific agent (thus loading native libraries)
  2. Restart master
  3. Queue the same build to execute on the same agent

Actual results:

java.lang.RuntimeException: java.io.IOException: Remote call on AGENT failed
	at hudson.plugins.tfs.model.Server.execute(Server.java:157)
	at hudson.plugins.tfs.model.Project.extractChangesetNumber(Project.java:272)
	at hudson.plugins.tfs.model.Project.getRemoteChangesetVersion(Project.java:268)
	at hudson.plugins.tfs.model.Project.getRemoteChangesetVersion(Project.java:284)
	at hudson.plugins.tfs.TeamFoundationServerScm.recordWorkspaceChangesetVersion(TeamFoundationServerScm.java:311)
	at hudson.plugins.tfs.TeamFoundationServerScm.checkout(TeamFoundationServerScm.java:260)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1276)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:607)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:529)
	at hudson.model.Run.execute(Run.java:1738)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
	at hudson.model.ResourceController.execute(ResourceController.java:98)
	at hudson.model.Executor.run(Executor.java:410)
Caused by: java.io.IOException: Remote call on AGENT failed
	at hudson.remoting.Channel.call(Channel.java:789)
	at hudson.plugins.tfs.model.Server.execute(Server.java:153)
	... 13 more
Caused by: java.lang.UnsatisfiedLinkError: com.microsoft.tfs.jni.internal.platformmisc.NativePlatformMisc.nativeGetEnvironmentVariable(Ljava/lang/String;)Ljava/lang/String;
	at com.microsoft.tfs.jni.internal.platformmisc.NativePlatformMisc.nativeGetEnvironmentVariable(Native Method)
	at com.microsoft.tfs.jni.internal.platformmisc.NativePlatformMisc.getEnvironmentVariable(NativePlatformMisc.java:134)
	at com.microsoft.tfs.jni.PlatformMiscUtils.getEnvironmentVariable(PlatformMiscUtils.java:52)
	at com.microsoft.tfs.core.config.EnvironmentVariables.getString(EnvironmentVariables.java:251)
	at com.microsoft.tfs.core.config.EnvironmentVariables.getBoolean(EnvironmentVariables.java:235)
	at com.microsoft.tfs.core.config.httpclient.DefaultHTTPClientFactory.getUserAgent(DefaultHTTPClientFactory.java:365)
	at com.microsoft.tfs.core.config.httpclient.DefaultHTTPClientFactory.configureClientParams(DefaultHTTPClientFactory.java:323)
	at com.microsoft.tfs.core.config.httpclient.DefaultHTTPClientFactory.newHTTPClient(DefaultHTTPClientFactory.java:142)
	at com.microsoft.tfs.core.TFSConnection.getHTTPClient(TFSConnection.java:1066)
	at com.microsoft.tfs.core.TFSConnection.getWebService(TFSConnection.java:894)
	at com.microsoft.tfs.core.config.client.DefaultClientFactory$7.newClient(DefaultClientFactory.java:239)
	at com.microsoft.tfs.core.config.client.DefaultClientFactory.newClient(DefaultClientFactory.java:98)
	at com.microsoft.tfs.core.TFSConnection.getClient(TFSConnection.java:1508)
	at com.microsoft.tfs.core.TFSTeamProjectCollection.getVersionControlClient(TFSTeamProjectCollection.java:377)
	at hudson.plugins.tfs.model.Server.getVersionControlClient(Server.java:142)
	at hudson.plugins.tfs.commands.RemoteChangesetVersionCommand.call(RemoteChangesetVersionCommand.java:56)
	at hudson.plugins.tfs.commands.RemoteChangesetVersionCommand.call(RemoteChangesetVersionCommand.java:33)
	at hudson.remoting.UserRequest.perform(UserRequest.java:121)
	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(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:69)
	at java.lang.Thread.run(Unknown Source)
	at ......remote call to AGENT(Native Method)
	at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1416)
	at hudson.remoting.UserResponse.retrieve(UserRequest.java:220)
	at hudson.remoting.Channel.call(Channel.java:781)
	... 14 more

Notes

Looking in the log on the agent, I see:

INFO: Restarting slave via jenkins.slaves.restarter.WinswSlaveRestarter@18f5ce68
Feb 27, 2016 2:02:21 PM jenkins.slaves.restarter.JnlpSlaveRestarterInstaller$2$1 onReconnect
SEVERE: Failed to restart slave with jenkins.slaves.restarter.WinswSlaveRestarter@18f5ce68
java.io.IOException: Restart failure. 'C:\path-to-jenkins\jenkins-slave.exe restart' completed with 0 but I'm still alive!  See https://wiki.jenkins-ci.org/display/JENKINS/Distributed+builds#Distributedbuilds-Windowsslaveserviceupgrades for a possible explanation and solution
	at jenkins.slaves.restarter.WinswSlaveRestarter.restart(WinswSlaveRestarter.java:54)
	at jenkins.slaves.restarter.JnlpSlaveRestarterInstaller$2$1.onReconnect(JnlpSlaveRestarterInstaller.java:77)
	at hudson.remoting.EngineListenerSplitter.onReconnect(EngineListenerSplitter.java:49)
	at hudson.remoting.Engine.run(Engine.java:288)

It might be possible to catch IOException in Server#execute, check if it's due to UnsatisfiedLinkError and point users to the same wiki page, allowing confused users to skip the step where they have to go figure out what's going on by browsing the agent's log.

Add Comment Add Comment
 
This message was sent by Atlassian JIRA (v6.4.2#64017-sha1:e244265)
Atlassian logo

ddigtiar@cloudbees.com (JIRA)

unread,
Sep 21, 2016, 10:20:02 PM9/21/16
to jenkinsc...@googlegroups.com
Denys Digtiar commented on Bug JENKINS-33193
 
Re: UnsatisfiedLinkError after a Windows agent's service fails to restart

Looks like it may happen on master as well when SCM polling is done.

2016-09-21 04:51:02.118-0400 [id=57626]	SEVERE	h.triggers.SCMTrigger$Runner#runPolling: Failed to record SCM polling for hudson.maven.MavenModuleSet@5b64cc8d[...]java.lang.UnsatisfiedLinkError: com.microsoft.tfs.jni.internal.platformmisc.NativePlatformMisc.nativeGetEnvironmentVariable(Ljava/lang/String;)Ljava/lang/String;
	at com.microsoft.tfs.jni.internal.platformmisc.NativePlatformMisc.nativeGetEnvironmentVariable(Native Method)
	at com.microsoft.tfs.jni.internal.platformmisc.NativePlatformMisc.getEnvironmentVariable(NativePlatformMisc.java:134)
	at com.microsoft.tfs.jni.PlatformMiscUtils.getEnvironmentVariable(PlatformMiscUtils.java:52)
	at com.microsoft.tfs.core.config.EnvironmentVariables.getString(EnvironmentVariables.java:251)
	at com.microsoft.tfs.core.config.EnvironmentVariables.getBoolean(EnvironmentVariables.java:235)
	at com.microsoft.tfs.core.config.httpclient.DefaultHTTPClientFactory.getUserAgent(DefaultHTTPClientFactory.java:365)
	at com.microsoft.tfs.core.config.httpclient.DefaultHTTPClientFactory.configureClientParams(DefaultHTTPClientFactory.java:323)
	at com.microsoft.tfs.core.config.httpclient.DefaultHTTPClientFactory.newHTTPClient(DefaultHTTPClientFactory.java:142)
	at com.microsoft.tfs.core.TFSConnection.getHTTPClient(TFSConnection.java:1066)
	at com.microsoft.tfs.core.TFSConnection.getWebService(TFSConnection.java:860)
	at com.microsoft.tfs.core.clients.registration.RegistrationClient.<init>(RegistrationClient.java:123)
	at com.microsoft.tfs.core.clients.registration.RegistrationClient.<init>(RegistrationClient.java:97)
	at com.microsoft.tfs.core.config.client.DefaultClientFactory$4.newClient(DefaultClientFactory.java:192)
	at com.microsoft.tfs.core.config.client.DefaultClientFactory.newClient(DefaultClientFactory.java:98)
	at com.microsoft.tfs.core.TFSConnection.getClient(TFSConnection.java:1508)
	at com.microsoft.tfs.core.TFSTeamProjectCollection.getRegistrationClient(TFSTeamProjectCollection.java:366)
	at com.microsoft.tfs.core.clients.webservices.IdentityManagementService.<init>(IdentityManagementService.java:64)
	at hudson.plugins.tfs.model.Server.createIdentityManagementService(Server.java:213)
	at hudson.plugins.tfs.model.Project.getOrCreateUserLookup(Project.java:112)
	at hudson.plugins.tfs.model.Project.getVCCHistory(Project.java:82)
	at hudson.plugins.tfs.model.Project.getLatestUncloakedChangeset(Project.java:179)
	at hudson.plugins.tfs.TeamFoundationServerScm.compareRemoteRevisionWith(TeamFoundationServerScm.java:574)
	at hudson.scm.SCM.poll(SCM.java:398)
	at hudson.model.AbstractProject._poll(AbstractProject.java:1453)
	at hudson.model.AbstractProject.poll(AbstractProject.java:1356)
	at jenkins.triggers.SCMTriggerItem$SCMTriggerItems$Bridge.poll(SCMTriggerItem.java:119)
	at hudson.triggers.SCMTrigger$Runner.runPolling(SCMTrigger.java:526)
	at hudson.triggers.SCMTrigger$Runner.run(SCMTrigger.java:555)
	at hudson.util.SequentialExecutionQueue$QueueEntry.run(SequentialExecutionQueue.java:119)
	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	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 java.lang.Thread.run(Unknown Source)
This message was sent by Atlassian JIRA (v7.1.7#71011-sha1:2526d7c)
Atlassian logo

olivier.dagenais@gmail.com (JIRA)

unread,
Feb 20, 2017, 3:46:16 PM2/20/17
to jenkinsc...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages