Radish alpha
r
rad:zwTxygwuz5LDGBq255RA2CbNGrz8
Radicle CI broker
Radicle
Git
feat: if job COB already exists, return its ID
Lars Wirzenius committed 8 months ago
commit 5bb6cc1a05e6b1b92e5f1db2249a5e1f3bfd50a9
parent 5e32f7f
2 files changed +18 -12
modified src/cob.rs
@@ -28,8 +28,8 @@ use crate::{logger, msg::RunId};
/// it is not necessary to keep the job id (indeed, that is not
/// returned). Separate instances of the CI broker have no way of
/// communicating the job id.
-
pub fn create_job(repo_id: RepoId, oid: Oid) {
-
    fn fallible_create(repo_id: RepoId, oid: Oid) -> Result<(), JobError> {
+
pub fn create_job(repo_id: RepoId, oid: Oid) -> Option<JobId> {
+
    fn fallible_create(repo_id: RepoId, oid: Oid) -> Result<JobId, JobError> {
        let profile = profile()?;
        let repo = repository(&profile, repo_id)?;
        let signer = profile.signer().map_err(JobError::Signer)?;
@@ -40,7 +40,7 @@ pub fn create_job(repo_id: RepoId, oid: Oid) {
                let job = jobs.create(oid, &signer).map_err(JobError::CreateJob)?;
                announce(&profile, repo_id)?;
                logger::job_create(&repo_id, &oid, job.id());
-
                Ok(())
+
                Ok(*job.id())
            }
            Err(err) => {
                logger::job_failure(
@@ -51,19 +51,14 @@ pub fn create_job(repo_id: RepoId, oid: Oid) {
                );
                Err(err)
            }
-
            Ok(_) => {
-
                logger::job_failure(
-
                    "job COB for Git object already exists",
-
                    &repo_id,
-
                    &oid,
-
                    None,
-
                );
-
                Err(JobError::JobExists(oid))
+
            Ok(job_id) => {
+
                logger::job_reuse(&repo_id, &oid, &job_id);
+
                Ok(job_id)
            }
        }
    }

-
    fallible_create(repo_id, oid).ok();
+
    fallible_create(repo_id, oid).ok()
}

/// Create a new run for an existing job. The run id should be the one
modified src/logger.rs
@@ -868,6 +868,17 @@ pub fn job_create(repo_id: &RepoId, oid: &Oid, job_id: &JobId) {
    );
}

+
pub fn job_reuse(repo_id: &RepoId, oid: &Oid, job_id: &JobId) {
+
    debug!(
+
        msg_id = ?Id::JobCreate,
+
        kind = %Kind::StartRun,
+
        ?repo_id,
+
        ?oid,
+
        ?job_id,
+
        "created job COB",
+
    );
+
}
+

pub fn job_run_create(job_id: JobId, run_id: Uuid) {
    debug!(
        msg_id = ?Id::JobRunCreate,