-
Bug
-
Resolution: Unresolved
-
Major
-
None
-
Jenkins version - 2.89.4 (Ubuntu 16.04.5 LTS x64, openjdk version "1.8.0_151")
Parameterized Remote Trigger Plugin version - 3.0.5
There is a problem when we try to use poll interval parameter's value more than 300 seconds(5 minutes). We have a Jenkins pipeline which may take from 30 to 60 minutes.
In some cases Jenkins `queued` item may move to the `pending` state as it described here:
https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Queue.java#L139
In such case the plugin use user specified poll interval time out value to check queued item state:
But all `queued` items in the Jenkins have time to live only 5 minutes as you can see it here:
https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Queue.java#L218
As result we have triggered `build` on the remote Jenkins server but failed build(`Max number of connection retries have been exeeded` error from the plugin) on the main Jenkins server:
Triggering parameterized remote job 'http://192.168.200.8:6680/job/RunTests' Using job-level defined 'Credentials Authentication' as user '***' (Credentials ID '***') Triggering remote job now. CSRF protection is enabled on the remote server. The remote job is pending. Waiting for next available executor on master. Remote job queue number: 124200 Waiting for remote build to be executed... Waiting for 300 seconds until next poll. Connection to remote server failed [404], waiting for to retry - 300 seconds until next attempt. URL: http://192.168.200.8:6680//queue/item/124200/api/json/, parameters: Retry attempt #1 out of 5 Connection to remote server failed [404], waiting for to retry - 300 seconds until next attempt. URL: http://192.168.200.8:6680//queue/item/124200/api/json/, parameters: Retry attempt #2 out of 5 Connection to remote server failed [404], waiting for to retry - 300 seconds until next attempt. URL: http://192.168.200.8:6680//queue/item/124200/api/json/, parameters: Retry attempt #3 out of 5 Connection to remote server failed [404], waiting for to retry - 300 seconds until next attempt. URL: http://192.168.200.8:6680//queue/item/124200/api/json/, parameters: Retry attempt #4 out of 5 Connection to remote server failed [404], waiting for to retry - 300 seconds until next attempt. URL: http://192.168.200.8:6680//queue/item/124200/api/json/, parameters: Retry attempt #5 out of 5 Max number of connection retries have been exeeded.
From my point of view there is a simple fix: use default value of the poll interval(10 seconds) to check `queued` item state. Because in the `pending` state the `queued` item is staying only for a few seconds:
int pollIntervalForQueuedItem = this.pollInterval; if (pollIntervalForQueuedItem > DEFAULT_POLLINTERVALL) { pollIntervalForQueuedItem = DEFAULT_POLLINTERVALL; } while (buildInfo.isQueued()) { context.logger.println("Waiting for " + pollIntervalForQueuedItem + " seconds until next poll."); Thread.sleep(pollIntervalForQueuedItem * 1000); buildInfo = updateBuildInfo(buildInfo, context); handle.setBuildInfo(buildInfo); }
i have just created pull request
https://github.com/lifemanship/Parameterized-Remote-Trigger-Plugin/commit/f65dae8077a0e16b86ce08512cb984a5a879e555