| 1131 | } |
| 1132 | |
| 1133 | static char *application_job_failure_response(const cbm_index_worker_result_t *result, |
| 1134 | const char *log_path) { |
| 1135 | char message[1024]; |
| 1136 | if (result && result->cancellation_requested) { |
| 1137 | (void)snprintf(message, sizeof(message), |
| 1138 | "index operation cancelled after its final owning session disconnected"); |
| 1139 | } else if (result && (result->supervision_failed || !result->tree_quiesced)) { |
| 1140 | (void)snprintf(message, sizeof(message), |
| 1141 | "index worker containment failed (%s); inspect log: %s", |
| 1142 | cbm_proc_outcome_str(result->outcome), log_path ? log_path : "unavailable"); |
| 1143 | } else if (result) { |
| 1144 | (void)snprintf(message, sizeof(message), |
| 1145 | "index worker ended with %s (exit=%d, signal=%d); inspect log: %s", |
| 1146 | cbm_proc_outcome_str(result->outcome), result->exit_code, |
| 1147 | result->term_signal, log_path ? log_path : "unavailable"); |
| 1148 | } else { |
| 1149 | (void)snprintf(message, sizeof(message), "index worker could not be started"); |
| 1150 | } |
| 1151 | return cbm_mcp_text_result(message, true); |
| 1152 | } |
| 1153 | |
| 1154 | static cbm_mcp_supervised_result_disposition_t application_attempt_disposition( |
| 1155 | cbm_daemon_application_job_t *job, application_attempt_t *attempt) { |
no test coverage detected