Skip to content

Commit 863df5a

Browse files
committed
Do not load PR from database unnecessarily when updating its mergeability state
1 parent 1095e92 commit 863df5a

6 files changed

+35
-38
lines changed

.sqlx/query-0f0acf10f909aa60beaedde032c1770566948a06c2b2e1f07806e948d83803e1.json

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.sqlx/query-3cc3661fb1e1ff945e415f80637e7d7614ffac5358b73ff039220ffed15c4fce.json

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/bors/merge_queue.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ async fn handle_start_auto_build(
230230
tracing::debug!("Failed to start auto build for PR {pr_num} due to merge conflict");
231231

232232
ctx.db
233-
.update_pr_mergeable_state(pr, MergeableState::Unknown)
233+
.set_pr_mergeable_state(repo.repository(), pr.number, MergeableState::Unknown)
234234
.await?;
235235
repo.client
236236
.post_comment(pr.number, merge_conflict_comment(&gh_pr.head.name))

src/bors/mergeability_queue.rs

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -297,19 +297,12 @@ pub async fn check_mergeability(
297297
}
298298

299299
// We know the mergeability status, so update it in the DB
300-
let pr_model = match ctx
301-
.db
302-
.get_pull_request(&pull_request.repo, pull_request.pr_number)
303-
.await?
304-
{
305-
Some(model) => model,
306-
None => {
307-
return Err(anyhow::anyhow!("PR not found in database: {pull_request}"));
308-
}
309-
};
310-
311300
ctx.db
312-
.update_pr_mergeable_state(&pr_model, new_mergeable_state.clone().into())
301+
.set_pr_mergeable_state(
302+
repo_state.repository(),
303+
fetched_pr.number,
304+
new_mergeable_state.into(),
305+
)
313306
.await?;
314307

315308
Ok(())

src/database/client.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ use super::operations::{
1616
get_nonclosed_pull_requests, get_pending_builds, get_prs_with_unknown_mergeability_state,
1717
get_pull_request, get_repository, get_repository_by_name, get_tagged_bot_comments,
1818
get_workflow_urls_for_build, get_workflows_for_build, insert_repo_if_not_exists,
19-
record_tagged_bot_comment, set_pr_assignees, set_pr_priority, set_pr_rollup, set_pr_status,
20-
unapprove_pull_request, undelegate_pull_request, update_build_check_run_id,
21-
update_build_status, update_mergeable_states_by_base_branch, update_pr_mergeability_state,
19+
record_tagged_bot_comment, set_pr_assignees, set_pr_mergeability_state, set_pr_priority,
20+
set_pr_rollup, set_pr_status, unapprove_pull_request, undelegate_pull_request,
21+
update_build_check_run_id, update_build_status, update_mergeable_states_by_base_branch,
2222
update_pr_try_build_id, update_workflow_status, upsert_pull_request, upsert_repository,
2323
};
2424
use super::{ApprovalInfo, DelegatedPermission, MergeableState, RunId, UpsertPullRequestParams};
@@ -69,12 +69,13 @@ impl PgDbClient {
6969
undelegate_pull_request(&self.pool, pr.id).await
7070
}
7171

72-
pub async fn update_pr_mergeable_state(
72+
pub async fn set_pr_mergeable_state(
7373
&self,
74-
pr: &PullRequestModel,
74+
repo: &GithubRepoName,
75+
pr_number: PullRequestNumber,
7576
mergeable_state: MergeableState,
7677
) -> anyhow::Result<()> {
77-
update_pr_mergeability_state(&self.pool, pr.id, mergeable_state).await
78+
set_pr_mergeability_state(&self.pool, repo, pr_number, mergeable_state).await
7879
}
7980

8081
pub async fn set_pr_assignees(

src/database/operations.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -235,16 +235,18 @@ pub(crate) async fn get_nonclosed_pull_requests(
235235
.await
236236
}
237237

238-
pub(crate) async fn update_pr_mergeability_state(
238+
pub(crate) async fn set_pr_mergeability_state(
239239
executor: impl PgExecutor<'_>,
240-
pr_id: i32,
240+
repo: &GithubRepoName,
241+
pr_number: PullRequestNumber,
241242
mergeability_state: MergeableState,
242243
) -> anyhow::Result<()> {
243244
measure_db_query("update_pr_mergeability_state", || async {
244245
sqlx::query!(
245-
"UPDATE pull_request SET mergeable_state = $1 WHERE id = $2",
246+
"UPDATE pull_request SET mergeable_state = $3 WHERE repository = $1 AND number = $2",
247+
repo as &GithubRepoName,
248+
pr_number.0 as i32,
246249
mergeability_state as _,
247-
pr_id
248250
)
249251
.execute(executor)
250252
.await?;

0 commit comments

Comments
 (0)