assert(ret);
if (fstat(fd, &st) < 0)
- return log_error_errno(errno, "Failed to stat stdout fd: %m");
+ return log_debug_errno(errno, "Failed to stat stdout fd: %m");
assert(S_ISREG(st.st_mode));
}
if (lseek(fd, SEEK_SET, 0) == (off_t) -1)
- return log_error_errno(errno, "Failed to seek to beginning of memfd: %m");
+ return log_debug_errno(errno, "Failed to seek to beginning of memfd: %m");
f = take_fdopen(&fd, "r");
if (!f)
- return log_error_errno(errno, "Failed to reopen memfd: %m");
+ return log_debug_errno(errno, "Failed to reopen memfd: %m");
r = sd_json_parse_file(f, "stdout", 0, &v, NULL, NULL);
if (r < 0)
- return log_error_errno(r, "Failed to parse JSON: %m");
+ return log_debug_errno(r, "Failed to parse JSON: %m");
*ret = TAKE_PTR(v);
return 0;
if (!j->detach_cb)
return;
+ log_debug("Got READY=1 from job %" PRIu64", detaching.", j->id);
+
assert(j->dbus_msg);
msg = TAKE_PTR(j->dbus_msg);
r = j->detach_cb(msg, j);
if (r < 0)
- log_warning_errno(r, "Failed to run callback on job ready event, ignoring: %m");
+ log_warning_errno(r, "Failed to detach job %" PRIu64 ", ignoring: %m", j->id);
}
static void job_on_errno(Job *j, const char *buf) {
r = parse_errno(buf);
if (r < 0) {
- log_warning_errno(r, "Got invalid errno value, ignoring: %m");
+ log_warning_errno(r, "Got invalid errno value from job %" PRIu64 ", ignoring: %m", j->id);
return;
}
else {
r = job_parse_child_output(TAKE_FD(j->stdout_fd), &json);
if (r < 0)
- sd_bus_error_set_errnof(&error, r, "Failed to parse JSON: %m");
+ sd_bus_error_set_errnof(&error, r, "Failed to parse job worker output: %m");
}
/* Only send notification of exit if the job was actually detached */
j->object_path,
j->status_errno != 0 ? -j->status_errno : si->si_status);
if (r < 0)
- log_warning_errno(r, "Cannot emit JobRemoved message, ignoring: %m");
+ log_warning_errno(r,
+ "Cannot emit JobRemoved message for job %" PRIu64 ", ignoring: %m",
+ j->id);
}
if (j->dbus_msg && j->complete_cb) {
if (sd_bus_error_is_set(&error)) {
- log_warning("Bus error occurred, ignoring callback for job: %s", error.message);
+ log_warning("Job %" PRIu64 " failed with bus error, ignoring callback: %s",
+ j->id, error.message);
sd_bus_reply_method_error(j->dbus_msg, &error);
} else {
r = j->complete_cb(j->dbus_msg, j, json, &error);
if (r < 0) {
- log_warning_errno(r, "Error during execution of job callback: %s", bus_error_message(&error, r));
+ log_warning_errno(r,
+ "Error during execution of job callback for job %" PRIu64 ": %s",
+ j->id,
+ bus_error_message(&error, r));
sd_bus_reply_method_errno(j->dbus_msg, r, &error);
}
}
_exit(EXIT_FAILURE);
}
+ log_info("Started job %" PRIu64 " with worker PID " PID_FMT,
+ j->id, pid.pid);
+
r = event_add_child_pidref(j->manager->event, &j->child, &pid, WEXITED, job_on_exit, j);
if (r < 0)
return log_error_errno(r, "Failed to add child process to event loop: %m");