When using 'p4.run("sync","//PATH/...") the Windows 10 slave drops the connection after 5 minutes every time. This was proven on a Webex using Wireshark.
If 'p4sync()' is used the command ran to completion (20 minutes). Potentially there is a problem with P4Groovy commands not displaying any output till the end of the command that is triggering this problem.
This ticket has been created to record the occurrence, allow me to try and reproduce the problem and to be a place holder where other reports of the same problem can be recorded.
Note: Cloudbees support were unable to find a problem on their side.
Example jenkinsfile (in editor):
pipeline{ agent{ label 'Win10' } stages{ stage('P4 Sync'){ steps{ script{ def p4 = p4 credential: 'MasterCredential', workspace: manualSpec(charset: 'utf8', name: 'CLIENT', pinHost: false, spec: clientSpec(allwrite: true, backup: false, clobber: false, compress: false, line: 'WIN', locked: false, modtime: false, rmdir: false, streamName: '', type: 'WRITABLE', view: '//depot/... //CLIENT/...')) p4.run("sync","-f", "//depot/PATH/...#0") p4.run("sync","-f", "//depot/PATH/...") } } } } }
- is duplicated by
-
JENKINS-55209 p4 groovy commands with 300 second timeout
-
- Closed
-
- relates to
-
JENKINS-65643 Using p4 groovy on depots that take longer than 5 minutes to sync see InterruptedException.
-
- Open
-
I'm running into this variation when running P4Groovy:
It times out after 30 seconds if there's no output because of this hard-coded beauty:
https://github.com/jenkinsci/remoting/blob/master/src/main/java/hudson/remoting/Request.java:171
// wait until the response arrives
t.setName(name+" / waiting for "channel.getName()" id="+id);
while(response==null && !channel.isInClosed())
// I don't know exactly when this can happen, as pendingCalls are cleaned up by Channel,
// but in production I've observed that in rare occasion it can block forever, even after a channel
// is gone. So be defensive against that.
wait(30*1000);
if (response==null)
// channel is closed and we still don't have a response
throw new RequestAbortedException(null);