Skip to content
Snippets Groups Projects
Commit afa17fdd authored by Neil Drumm's avatar Neil Drumm :wave:
Browse files

Also wait for preparing merge status, log what does happen

parent 0594b4f2
Branches
No related tags found
No related merge requests found
......@@ -591,9 +591,10 @@ class DrupalorgIssueFork extends Entity {
* Number of microseconds to wait between polling requests.
*
* @return bool
* If the merge request can currently be merged.
* Detailed merge status from
* https://docs.gitlab.com/api/merge_requests/#merge-status
*/
public function mergeRequestCanBeMerged($iid, $poll_delay = 10000) {
public function mergeRequestCheckStatus($iid, $poll_delay = 10000) {
/* todo use when https://github.com/GitLabPHP/Client/pull/588 lands, and watch out for https://github.com/GitLabPHP/Client/issues/573
$client = versioncontrol_gitlab_get_client()->api('merge_requests');
$project_repository = versioncontrol_project_repository_load($this->project_nid);
......@@ -608,10 +609,11 @@ class DrupalorgIssueFork extends Entity {
'with_merge_status_recheck' => TRUE,
]));
timer_start('merge_status_check');
while (in_array(($merge_status = $this->fetchMergeRequestInfo($iid)['detailed_merge_status']), ['unchecked', 'checking']) && timer_read('merge_status_check') < 60*1000) {
usleep($poll_delay);
while (in_array(($merge_status = $this->fetchMergeRequestInfo($iid)['detailed_merge_status']), ['unchecked', 'checking', 'preparing']) && timer_read('merge_status_check') < 60*1000) {
usleep($poll_delay);
}
return $merge_status === 'mergeable';
return $merge_status;
}
/**
......@@ -653,8 +655,12 @@ class DrupalorgIssueFork extends Entity {
return FALSE;
}
// Wait for merge status rechecking.
if (!$this->mergeRequestCanBeMerged($iid)) {
$merge_status = $this->mergeRequestCheckStatus($iid);
if ($merge_status !== 'mergeable') {
drupal_set_message(t('Merge request can not be merged.'), 'error');
throw new Exception(format_string('detailed_merge_status is <pre>@merge_status</pre>', [
'@merge_status' => $merge_status,
]));
return FALSE;
}
// Merge.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment