Hello
P4Plugin polls all workspaces used in job even if poll parameter is disabled in checkout.
Steps to reproduce
- Create pipeline job test4 (see below)
- Start pipeline job test4
- See "Perforce Software Polling Log" and Perforce Server Log
pipeline { agent(none) options { ansiColor("xterm") buildDiscarder(logRotator(numToKeepStr: "10")) disableConcurrentBuilds() disableResume() skipDefaultCheckout(true) timestamps() } triggers { pollSCM("* * * * *") } stages { stage("Master") { agent { label("master") } steps { checkout perforce(credential: 'perforce-ticket-jenkins', populate: flushOnly(pin: '', quiet: false), workspace: streamSpec(charset: 'none', format: 'test4-master', pinHost: true, streamName: '//playground/jenkins-main')) } } stage("Win-1") { agent { label("k02-bld-win-01") } steps { checkout changelog: false, poll: false, scm: perforce(credential: 'perforce-ticket-jenkins', populate: flushOnly(pin: '', quiet: false), workspace: streamSpec(charset: 'none', format: 'test4-win-1', pinHost: true, streamName: '//playground/jenkins-main')) } } stage("Win-2") { agent { label("k02-bld-win-02") } steps { checkout changelog: false, poll: false, scm: perforce(credential: 'perforce-ticket-jenkins', populate: flushOnly(pin: '', quiet: false), workspace: streamSpec(charset: 'none', format: 'test4-win-2', pinHost: true, streamName: '//playground/jenkins-main')) } } } }
Perforce Software Polling Log
Started on Feb 22, 2019 3:45:00 PM P4: Polling on: master with:test4-master Found last change 1180191 on syncID test4-master ... p4 client -o test4-master + ... p4 info + ... p4 info + ... p4 client -o test4-master + ... No change in client detected. P4 Task: establishing connection. ... server: perforce:1666 ... node: k02-jenkins P4: Polling with range: 1180191,now ... p4 changes -m20 //test4-master/...@1180191,now + ... p4 repos -C + P4: Polling on: master with:test4-win-1 Found last change 1180191 on syncID test4-win-1 ... p4 client -o test4-win-1 + ... p4 info + ... p4 info + ... p4 client -o test4-win-1 + ... No change in client detected. P4 Task: establishing connection. ... server: perforce:1666 ... node: k02-jenkins P4: Polling with range: 1180191,now ... p4 changes -m20 //test4-win-1/...@1180191,now + ... p4 repos -C + P4: Polling on: master with:test4-win-2 Found last change 1180191 on syncID test4-win-2 ... p4 client -o test4-win-2 + ... p4 info + ... p4 info + ... p4 client -o test4-win-2 + ... No change in client detected. P4 Task: establishing connection. ... server: perforce:1666 ... node: k02-jenkins P4: Polling with range: 1180191,now ... p4 changes -m20 //test4-win-2/...@1180191,now + ... p4 repos -C + Done. Took 0.14 sec No changes
Perforce Server Error Log
4,1550834520,532931606,2019/02/22 13:22:00 532931606,210535,1,jenkins,test4-win-1,user-repos,10.10.20.103,jenkins.p4-plugin,1.9.6/Linux,-C,error,6,95,Client %27test4-win-1%27 can only be used from host %27k02-bld-win-01%27. 4,1550834520,580422337,2019/02/22 13:22:00 580422337,210544,1,jenkins,test4-win-2,user-repos,10.10.20.103,jenkins.p4-plugin,1.9.6/Linux,-C,error,6,95,Client %27test4-win-2%27 can only be used from host %27k02-bld-win-02%27.
As you can see jenkins tries to poll all three workspaces: test4-master (poll: true) + test4-win-1 (poll: false) + test4-win-2 (poll: false) from master.
Cause
WorkflowJob.poll() uses PerforceScm.getKey() to find a polling baseline for workspaces.
PerforceScm.getKey() returns the same SCM key for different workspaces because it doesn't include a workspace name.
Result: WorkflowJob.poll() polls all workspaces with the same SCM key.
PR
I have created a pull request with a possible fix of this problem:
https://github.com/jenkinsci/p4-plugin/pull/95
Please fix this bug.
Thank you
- is related to
-
JENKINS-47553 Pipeline 'poll' option in checkout ignored if using libraries for sync
-
- Reopened
-
[JENKINS-56248] P4Plugin Polls Workspaces With Disabled Polling (poll: false)
Labels | New: P4_SUPPORT |
Assignee | New: Karl Wirth [ p4karl ] |
Assignee | Original: Karl Wirth [ p4karl ] |
Labels | Original: P4_SUPPORT | New: P4_A |
Description |
Original:
Hello P4Plugin polls all workspaces used in job even if poll parameter is disabled in checkout. h2. Steps to reproduce # Create pipeline job test4 (see below) # Start pipeline job test4 # See "Perforce Software Polling Log" and Perforce Server Log {code:java} pipeline { agent(none) options { ansiColor("xterm") buildDiscarder(logRotator(numToKeepStr: "10")) disableConcurrentBuilds() disableResume() skipDefaultCheckout(true) timestamps() } triggers { pollSCM("* * * * *") } stages { stage("Master") { agent { label("master") } steps { checkout perforce(credential: 'perforce-ticket-jenkins', populate: flushOnly(pin: '', quiet: false), workspace: streamSpec(charset: 'none', format: 'test4-master', pinHost: true, streamName: '//playground/jenkins-main')) } } stage("Win-1") { agent { label("k02-bld-win-01") } steps { checkout changelog: false, poll: false, scm: perforce(credential: 'perforce-ticket-jenkins', populate: flushOnly(pin: '', quiet: false), workspace: streamSpec(charset: 'none', format: 'test4-win-1', pinHost: true, streamName: '//playground/jenkins-main')) } } stage("Win-2") { agent { label("k02-bld-win-02") } steps { checkout changelog: false, poll: false, scm: perforce(credential: 'perforce-ticket-jenkins', populate: flushOnly(pin: '', quiet: false), workspace: streamSpec(charset: 'none', format: 'test4-win-2', pinHost: true, streamName: '//playground/jenkins-main')) } } } } {code} h2. Perforce Software Polling Log {code:java} Started on Feb 22, 2019 3:45:00 PM P4: Polling on: master with:test4-master Found last change 1180191 on syncID test4-master ... p4 client -o test4-master + ... p4 info + ... p4 info + ... p4 client -o test4-master + ... No change in client detected. P4 Task: establishing connection. ... server: perforce:1666 ... node: k02-jenkins P4: Polling with range: 1180191,now ... p4 changes -m20 //test4-master/...@1180191,now + ... p4 repos -C + P4: Polling on: master with:test4-win-1 Found last change 1180191 on syncID test4-win-1 ... p4 client -o test4-win-1 + ... p4 info + ... p4 info + ... p4 client -o test4-win-1 + ... No change in client detected. P4 Task: establishing connection. ... server: perforce:1666 ... node: k02-jenkins P4: Polling with range: 1180191,now ... p4 changes -m20 //test4-win-1/...@1180191,now + ... p4 repos -C + P4: Polling on: master with:test4-win-2 Found last change 1180191 on syncID test4-win-2 ... p4 client -o test4-win-2 + ... p4 info + ... p4 info + ... p4 client -o test4-win-2 + ... No change in client detected. P4 Task: establishing connection. ... server: perforce:1666 ... node: k02-jenkins P4: Polling with range: 1180191,now ... p4 changes -m20 //test4-win-2/...@1180191,now + ... p4 repos -C + Done. Took 0.14 sec No changes {code} h2. Perforce Server Error Log {code:java} 4,1550834520,532931606,2019/02/22 13:22:00 532931606,210535,1,jenkins,test4-win-1,user-repos,10.10.20.103,jenkins.p4-plugin,1.9.6/Linux,-C,error,6,95,Client %27test4-win-1%27 can only be used from host %27k02-bld-win-01%27. 4,1550834520,580422337,2019/02/22 13:22:00 580422337,210544,1,jenkins,test4-win-2,user-repos,10.10.20.103,jenkins.p4-plugin,1.9.6/Linux,-C,error,6,95,Client %27test4-win-2%27 can only be used from host %27k02-bld-win-02%27. {code} As you can see jenkins tries to poll all three workspaces: *test4-master* (poll: true) + *test4-win-1* (poll: false) + *test4-win-2* (poll: false) from master. Please fix this bug. Thank you |
New:
Hello P4Plugin polls all workspaces used in job even if poll parameter is disabled in checkout. h2. Steps to reproduce # Create pipeline job test4 (see below) # Start pipeline job test4 # See "Perforce Software Polling Log" and Perforce Server Log {code:java} pipeline { agent(none) options { ansiColor("xterm") buildDiscarder(logRotator(numToKeepStr: "10")) disableConcurrentBuilds() disableResume() skipDefaultCheckout(true) timestamps() } triggers { pollSCM("* * * * *") } stages { stage("Master") { agent { label("master") } steps { checkout perforce(credential: 'perforce-ticket-jenkins', populate: flushOnly(pin: '', quiet: false), workspace: streamSpec(charset: 'none', format: 'test4-master', pinHost: true, streamName: '//playground/jenkins-main')) } } stage("Win-1") { agent { label("k02-bld-win-01") } steps { checkout changelog: false, poll: false, scm: perforce(credential: 'perforce-ticket-jenkins', populate: flushOnly(pin: '', quiet: false), workspace: streamSpec(charset: 'none', format: 'test4-win-1', pinHost: true, streamName: '//playground/jenkins-main')) } } stage("Win-2") { agent { label("k02-bld-win-02") } steps { checkout changelog: false, poll: false, scm: perforce(credential: 'perforce-ticket-jenkins', populate: flushOnly(pin: '', quiet: false), workspace: streamSpec(charset: 'none', format: 'test4-win-2', pinHost: true, streamName: '//playground/jenkins-main')) } } } } {code} h2. Perforce Software Polling Log {code:java} Started on Feb 22, 2019 3:45:00 PM P4: Polling on: master with:test4-master Found last change 1180191 on syncID test4-master ... p4 client -o test4-master + ... p4 info + ... p4 info + ... p4 client -o test4-master + ... No change in client detected. P4 Task: establishing connection. ... server: perforce:1666 ... node: k02-jenkins P4: Polling with range: 1180191,now ... p4 changes -m20 //test4-master/...@1180191,now + ... p4 repos -C + P4: Polling on: master with:test4-win-1 Found last change 1180191 on syncID test4-win-1 ... p4 client -o test4-win-1 + ... p4 info + ... p4 info + ... p4 client -o test4-win-1 + ... No change in client detected. P4 Task: establishing connection. ... server: perforce:1666 ... node: k02-jenkins P4: Polling with range: 1180191,now ... p4 changes -m20 //test4-win-1/...@1180191,now + ... p4 repos -C + P4: Polling on: master with:test4-win-2 Found last change 1180191 on syncID test4-win-2 ... p4 client -o test4-win-2 + ... p4 info + ... p4 info + ... p4 client -o test4-win-2 + ... No change in client detected. P4 Task: establishing connection. ... server: perforce:1666 ... node: k02-jenkins P4: Polling with range: 1180191,now ... p4 changes -m20 //test4-win-2/...@1180191,now + ... p4 repos -C + Done. Took 0.14 sec No changes {code} h2. Perforce Server Error Log {code:java} 4,1550834520,532931606,2019/02/22 13:22:00 532931606,210535,1,jenkins,test4-win-1,user-repos,10.10.20.103,jenkins.p4-plugin,1.9.6/Linux,-C,error,6,95,Client %27test4-win-1%27 can only be used from host %27k02-bld-win-01%27. 4,1550834520,580422337,2019/02/22 13:22:00 580422337,210544,1,jenkins,test4-win-2,user-repos,10.10.20.103,jenkins.p4-plugin,1.9.6/Linux,-C,error,6,95,Client %27test4-win-2%27 can only be used from host %27k02-bld-win-02%27. {code} As you can see jenkins tries to poll all three workspaces: *test4-master* (poll: true) + *test4-win-1* (poll: false) + *test4-win-2* (poll: false) from master. h2. Cause WorkflowJob.poll() uses PerforceScm.getKey() to find a polling baseline for workspaces. PerforceScm.getKey() returns the same SCM key for different workspaces because it doesn't include a workspace name. Result: WorkflowJob.poll() polls all workspaces with the same SCM key. h2. PR I have created a pull request with a possible fix of this problem: https://github.com/jenkinsci/p4-plugin/pull/95 Please fix this bug. Thank you |
Labels | Original: P4_A | New: P4_B |
Assignee | New: Charusheela Bopardikar [ cbopardikar ] |
Hi lystor, Thanks for highlighting this. I will try to repro it and let you know my findings.