core/transaction: avoid misleading error message when unit not found

There's no point in telling the user to look at the logs when
an attempt to load the unit file failed with ENOENT.

https://bugzilla.redhat.com/show_bug.cgi?id=996133
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2014-06-22 14:04:23 -04:00
parent 9ba6c18532
commit 04ef5b03f6
2 changed files with 12 additions and 10 deletions

4
TODO
View File

@ -15,10 +15,6 @@ Bugfixes:
* properly handle .mount unit state tracking when two mount points are stacked one on top of another on the exact same mount point.
* shorten the message to sane length:
"Cannot add dependency job for unit display-manager.service, ignoring: Unit display-manager.service
failed to load: No such file or directory. See system logs and 'systemctl status display-manager.service' for details."
* sd_bus_unref() is broken regarding self-references and "pseudo thread-safety".
See the comment in sd_bus_unref() for more..

View File

@ -870,12 +870,18 @@ int transaction_add_job_and_dependencies(
}
if (type != JOB_STOP && unit->load_state == UNIT_ERROR) {
sd_bus_error_setf(e, BUS_ERROR_LOAD_FAILED,
"Unit %s failed to load: %s. "
"See system logs and 'systemctl status %s' for details.",
unit->id,
strerror(-unit->load_error),
unit->id);
if (unit->load_error == -ENOENT)
sd_bus_error_setf(e, BUS_ERROR_LOAD_FAILED,
"Unit %s failed to load: %s.",
unit->id,
strerror(-unit->load_error));
else
sd_bus_error_setf(e, BUS_ERROR_LOAD_FAILED,
"Unit %s failed to load: %s. "
"See system logs and 'systemctl status %s' for details.",
unit->id,
strerror(-unit->load_error),
unit->id);
return -EINVAL;
}