Skip to content

Commit 6b34ce9

Browse files
committed
Add rust cancel_submission function
1 parent b53e7cd commit 6b34ce9

2 files changed

Lines changed: 54 additions & 0 deletions

File tree

opsqueue/src/common/submission.rs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -634,6 +634,58 @@ pub mod db {
634634
.await
635635
}
636636

637+
#[tracing::instrument(skip(conn))]
638+
pub async fn cancel_submission(
639+
id: SubmissionId,
640+
mut conn: impl WriterConnection,
641+
) -> sqlx::Result<()> {
642+
conn.transaction(move |mut tx| {
643+
Box::pin(
644+
async move { cancel_submission_notx(id, &mut tx).await },
645+
)
646+
})
647+
.await
648+
}
649+
650+
/// Do not call directly! Must be called inside a transaction.
651+
pub async fn cancel_submission_notx(
652+
id: SubmissionId,
653+
mut conn: impl WriterConnection<Transaction = True>,
654+
) -> sqlx::Result<()> {
655+
cancel_submission_raw(id, &mut conn).await?;
656+
super::chunk::db::skip_remaining_chunks(id, conn).await?;
657+
Ok(())
658+
}
659+
660+
#[tracing::instrument(skip(conn))]
661+
pub(super) async fn cancel_submission_raw(
662+
id: SubmissionId,
663+
mut conn: impl WriterConnection,
664+
) -> sqlx::Result<()> {
665+
let now = chrono::prelude::Utc::now();
666+
667+
query!(
668+
"
669+
INSERT INTO submissions_cancelled
670+
(id, chunks_total, prefix, metadata, cancelled_at, chunks_done)
671+
SELECT id, chunks_total, prefix, metadata, julianday($1), chunks_done FROM submissions WHERE id = $3;
672+
673+
DELETE FROM submissions WHERE id = $4 RETURNING *;
674+
",
675+
now,
676+
id,
677+
id,
678+
)
679+
.fetch_one(conn.get_inner())
680+
.await?;
681+
counter!(crate::prometheus::SUBMISSIONS_CANCELLED_COUNTER).increment(1);
682+
histogram!(crate::prometheus::SUBMISSIONS_DURATION_CANCEL_HISTOGRAM).record(
683+
crate::prometheus::time_delta_as_f64(Utc::now() - id.timestamp()),
684+
);
685+
686+
Ok(())
687+
}
688+
637689
#[tracing::instrument(skip(conn))]
638690
/// Do not call directly! MUST be called inside a transaction.
639691
pub(super) async fn complete_submission_raw(

opsqueue/src/prometheus.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@ use crate::db::DBPools;
1717
pub const SUBMISSIONS_TOTAL_COUNTER: &str = "submissions_total_count";
1818
pub const SUBMISSIONS_COMPLETED_COUNTER: &str = "submissions_completed_count";
1919
pub const SUBMISSIONS_FAILED_COUNTER: &str = "submissions_failed_count";
20+
pub const SUBMISSIONS_CANCELLED_COUNTER: &str = "submissions_failed_count";
2021
pub const SUBMISSIONS_DURATION_COMPLETE_HISTOGRAM: &str = "submissions_complete_duration_seconds";
2122
pub const SUBMISSIONS_DURATION_FAIL_HISTOGRAM: &str = "submissions_fail_duration_seconds";
23+
pub const SUBMISSIONS_DURATION_CANCEL_HISTOGRAM: &str = "submissions_cancel_duration_seconds";
2224

2325
pub const CHUNKS_COMPLETED_COUNTER: &str = "chunks_completed_count";
2426
pub const CHUNKS_FAILED_COUNTER: &str = "chunks_failed_count";

0 commit comments

Comments
 (0)