Project homepage Mailing List  Warmcat.com  API Docs  Github Mirror 
    npro  
 Modern all-safe Rust Network Protocol library supporting h1, h2, h3, ws, wt sans-IO and with socket IO + tls
git clone https://npro.rs/repo/npro
 
root / scripts / sai-power.service
Author[]Andy Green <andy@warmcat.com> 2026-06-19 04:47 UTC
Committer[]Andy Green <andy@warmcat.com> 2026-06-19 11:24 UTC
Tree825f200387ee2db21159898f49f9373f5738ea7c   Raw Patch
 
virt: stop looping
virt: stop looping
diff --git a/src/server/s-task-helpers.c b/src/server/s-task-helpers.c index 41d08f5..c89fdaa 100644 --- a/src/server/s-task-helpers.c +++ b/src/server/s-task-helpers.c @@ -156,7 +156,7 @@ sais_set_task_state(struct vhd *vhd, const char *task_uuid, sai_event_state_t state, uint64_t started, uint64_t duration) { char update[512], esc1[96], esc2[96], esc3[32], esc4[32], event_uuid[33]; - sai_event_state_t oes, sta, task_ostate, ostate = state; + sai_event_state_t oes, sta, task_ostate; unsigned int count = 0, count_good = 0, count_bad = 0; uint64_t started_orig = started; struct lwsac *ac = NULL; @@ -274,7 +274,8 @@ sais_set_task_state(struct vhd *vhd, const char *task_uuid, lws_sul_schedule(vhd->context, 0, &vhd->sul_central, sais_central_cb, 1); - sais_platforms_with_tasks_pending(vhd); + if (state != SAIES_STEP_SUCCESS) + sais_platforms_with_tasks_pending(vhd); /* * So, how many tasks for this event? @@ -357,10 +358,7 @@ sais_set_task_state(struct vhd *vhd, const char *task_uuid, sai_event_db_close(&vhd->sqlite3_cache, (sqlite3 **)&e->pdb); lwsac_free(&ac); - if (ostate == SAIES_STEP_SUCCESS) { - lwsl_notice("%s: sais_set_task_state() is calling sais_create_and_offer_task_step()\n", __func__); - sais_create_and_offer_task_step(vhd, task_uuid); - } + return 0; diff --git a/src/server/s-task.c b/src/server/s-task.c index 25c12ce..a1108a3 100644 --- a/src/server/s-task.c +++ b/src/server/s-task.c @@ -581,7 +581,7 @@ sais_platforms_with_tasks_pending(struct vhd *vhd) vhd->sqlite3_path_lhs, e->uuid, 0, &pdb)) { if (sqlite3_prepare_v2(pdb, "select platform, count(*), " - "sum(case when state = 0 or state = 9 then 1 else 0 end) " + "sum(case when (state = 0 or state = 9) and (builder_name IS NULL or builder_name = '') then 1 else 0 end) " "from tasks t1 where " "run = (select max(run) from tasks t2 where t1.uuid = t2.uuid) and " "(state = 0 or state = 1 or state = 2 or state = 9) group by platform", -1, &sm, @@ -845,10 +845,13 @@ sais_create_and_offer_task_step(struct vhd *vhd, const char *task_uuid) inflight = sais_is_task_inflight(vhd, NULL, task_uuid, &ul); - if (inflight /* && ul->started */) { - lwsl_notice("%s: ~~~ not continuing %s as listed on inflight\n", - __func__, task_uuid); - return 1; + if (inflight) { + if (!ul->started) { + lwsl_notice("%s: ~~~ not continuing %s as listed on inflight\n", + __func__, task_uuid); + return 1; + } + ul->started = 0; } event_uuid[0] = '\0'; @@ -924,15 +927,12 @@ sais_create_and_offer_task_step(struct vhd *vhd, const char *task_uuid) goto bail; } - if (sais_is_task_inflight(vhd, NULL, task_uuid, &ul)) { - lwsl_warn("%s: bailing as inflight %s\n", __func__, task_uuid); - goto bail; - } - - if (sais_add_to_inflight_list_if_absent(vhd, sp, task_uuid)) { - lwsl_warn("%s: bailing as can't add to inflight %s\n", __func__, task_uuid); - sais_task_clear_build_and_logs(vhd, task_uuid, 0); - goto bail; + if (!inflight) { + if (sais_add_to_inflight_list_if_absent(vhd, sp, task_uuid)) { + lwsl_warn("%s: bailing as can't add to inflight %s\n", __func__, task_uuid); + sais_task_clear_build_and_logs(vhd, task_uuid, 0); + goto bail; + } } lws_strncpy(url, temp_task->one_event->repo_fetchurl, sizeof(url)); @@ -1015,10 +1015,12 @@ sais_create_and_offer_task_step(struct vhd *vhd, const char *task_uuid) temp_task->server_name = pss->server_name; - if (sais_add_to_inflight_list_if_absent(vhd, sp, temp_task->uuid)) { - lwsl_warn("%s: bailing as can't add to inflight %s\n", __func__, task_uuid); - sais_task_clear_build_and_logs(vhd, temp_task->uuid, 0); - goto bail; + if (!inflight) { + if (sais_add_to_inflight_list_if_absent(vhd, sp, temp_task->uuid)) { + lwsl_warn("%s: bailing as can't add to inflight %s\n", __func__, task_uuid); + sais_task_clear_build_and_logs(vhd, temp_task->uuid, 0); + goto bail; + } } /* diff --git a/src/server/s-ws-builder.c b/src/server/s-ws-builder.c index 68700e8..d7e0f11 100644 --- a/src/server/s-ws-builder.c +++ b/src/server/s-ws-builder.c @@ -466,7 +466,7 @@ sais_builder_disconnected(struct vhd *vhd, struct lws *wsi) lws_snprintf(q, sizeof(q), "SELECT uuid FROM tasks WHERE " - "builder_name=? AND (state = %d OR state = %d) " + "builder_name=? AND (state = 0 OR state = %d OR state = %d) " "AND run=(SELECT max(run) FROM tasks t2 WHERE t2.uuid = tasks.uuid)", SAIES_PASSED_TO_BUILDER, SAIES_BEING_BUILT); @@ -623,6 +623,7 @@ sais_process_rej(struct vhd *vhd, struct pss *pss, lwsl_notice("%s: SAI_TASK_REASON_BUSY: Set busy: %s\n", __func__, rej->task_uuid); do_remove_uuid = 1; + sais_bind_task_to_builder(vhd, NULL, NULL, rej->task_uuid); sais_set_task_state(vhd, rej->task_uuid, SAIES_WAITING, 0, 0); sais_plat_busy(sp, 1); break; @@ -658,7 +659,10 @@ sais_process_rej(struct vhd *vhd, struct pss *pss, lws_now_secs() - pss->first_log_timestamp)) lwsl_notice("%s: task state update failed, possibly event deleted\n", __func__); - sais_plat_busy(sp, 0); + if (n == SAIES_STEP_SUCCESS) + do_remove_uuid = 0; + else + sais_plat_busy(sp, 0); break; }
Page fetched 0s ago, creation time: 3ms (vhost etag hits: 0%, cache hits: 0%)