merge-request: harden target update recovery
This commit is contained in:
@@ -4046,12 +4046,17 @@ async fn scoped_complete_merge_request(
|
|||||||
Ok(outcome) => Ok(Json(outcome)),
|
Ok(outcome) => Ok(Json(outcome)),
|
||||||
Err(error) => {
|
Err(error) => {
|
||||||
if !target_was_already_updated {
|
if !target_was_already_updated {
|
||||||
let _ = repositories.update_merge_target(
|
if let Err(rollback_error) = repositories.update_merge_target(
|
||||||
&mr.repository_id,
|
&mr.repository_id,
|
||||||
selector,
|
selector,
|
||||||
&input.result_commit,
|
&input.result_commit,
|
||||||
&input.target_commit,
|
&input.target_commit,
|
||||||
);
|
) {
|
||||||
|
return Err(Error::InvalidInput(format!(
|
||||||
|
"merge finalization failed after target update and guarded rollback also failed: finalization={error}; rollback={rollback_error:?}"
|
||||||
|
))
|
||||||
|
.into());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Err(error.into())
|
Err(error.into())
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user