| 1297 | } |
| 1298 | |
| 1299 | static void application_job_try_partial(cbm_daemon_application_job_t *job, |
| 1300 | const char *quarantine_path, int quarantined, |
| 1301 | application_job_execution_t *execution) { |
| 1302 | if (application_job_cancel_requested(job)) { |
| 1303 | application_job_execution_cancel(execution); |
| 1304 | return; |
| 1305 | } |
| 1306 | application_attempt_t attempt; |
| 1307 | application_attempt_status_t status = |
| 1308 | application_job_run_attempt(job, NULL, quarantine_path, &attempt); |
| 1309 | if (status == APPLICATION_ATTEMPT_CANCELLED) { |
| 1310 | application_job_execution_cancel(execution); |
| 1311 | return; |
| 1312 | } |
| 1313 | if (status != APPLICATION_ATTEMPT_TERMINAL) { |
| 1314 | return; |
| 1315 | } |
| 1316 | cbm_proc_outcome_t failure_outcome = CBM_PROC_SPAWN_FAILED; |
| 1317 | application_attempt_decision_t decision = |
| 1318 | application_consume_attempt(job, &attempt, execution, &failure_outcome); |
| 1319 | if (decision == APPLICATION_ATTEMPT_DECISION_SUCCESS) { |
| 1320 | char quarantined_text[32]; |
| 1321 | (void)snprintf(quarantined_text, sizeof(quarantined_text), "%d", quarantined); |
| 1322 | cbm_log_warn("daemon.index.recovery_partial", "quarantined", quarantined_text); |
| 1323 | } |
| 1324 | } |
| 1325 | |
| 1326 | static void application_job_recover(cbm_daemon_application_job_t *job, |
| 1327 | application_job_execution_t *execution) { |
no test coverage detected