RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 1888017 - Systemd unit starts on boot even with a Requires to a non-existent service
Summary: Systemd unit starts on boot even with a Requires to a non-existent service
Keywords:
Status: CLOSED NEXTRELEASE
Alias: None
Product: Red Hat Enterprise Linux 8
Classification: Red Hat
Component: systemd
Version: 8.2
Hardware: Unspecified
OS: Unspecified
unspecified
urgent
Target Milestone: rc
: 8.0
Assignee: systemd-maint
QA Contact: Frantisek Sumsal
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2020-10-13 19:56 UTC by Tim Rozet
Modified: 2023-06-01 09:46 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2023-06-01 09:46:04 UTC
Type: Bug
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Github systemd systemd issues 11338 0 None open core: transaction building logic recursively adds jobs for deps wrt anchor job, causing unwanted jobs to get enqueued an... 2023-01-25 11:40:29 UTC

Description Tim Rozet 2020-10-13 19:56:30 UTC
Description of problem:
When creating a unit that Requires a non-existent unit, the service will start on boot. Take ovs-configuration.service as an example:

sh-4.4#  cat /etc/systemd/system/ovs-configuration.service 
[Unit]
Description=Configures OVS with proper host networking configuration
# Removal of this file signals firstboot completion
ConditionPathExists=!/etc/ignition-machine-config-encapsulated.json
# This service is used to move a physical NIC into OVS and reconfigure OVS to use the host IP
Requires=openvswitch.service
Wants=NetworkManager-wait-online.service
After=NetworkManager-wait-online.service openvswitch.service network.service
Before=network-online.target kubelet.service crio.service node-valid-hostname.service

[Service]
# Need oneshot to delay kubelet
Type=oneshot
ExecStart=/usr/local/bin/configure-ovs.sh OpenShiftSDN
StandardOutput=journal+console
StandardError=journal+console

[Install]
WantedBy=network-online.target

In this case, the ovs-configuration.service requires openvswitch.service. When openvswitch is not installed, issuing a systemctl start ovs-configuration.service refuses to start (as expected). However, on reboot we see:

Oct 13 05:41:57 ip-10-0-55-205.us-east-2.compute.internal systemd[1]: Cannot add dependency job for unit ovs-configuration.service, ignoring: Unit not found.
Oct 13 05:42:04 ip-10-0-55-205.us-east-2.compute.internal systemd[1]: ovs-configuration.service: main process exited, code=exited, status=127/n/a
Oct 13 05:42:04 ip-10-0-55-205.us-east-2.compute.internal systemd[1]: Unit ovs-configuration.service entered failed state.
Oct 13 05:42:04 ip-10-0-55-205.us-east-2.compute.internal systemd[1]: ovs-configuration.service failed

^The service executed anyway. This looks very similar to 

https://github.com/systemd/systemd/issues/11338

Version-Release number of selected component (if applicable):
Seen in RHEL 7.8:
sh-4.2# rpm -qa | grep systemd
systemd-libs-219-78.el7.x86_64
systemd-sysv-219-78.el7.x86_64
systemd-219-78.el7.x86_64

and RHEL 8.2:
sh-4.4# rpm -qa | grep systemd
systemd-pam-239-31.el8_2.2.x86_64
clevis-systemd-11-9.el8_2.1.x86_64
systemd-239-31.el8_2.2.x86_64
systemd-libs-239-31.el8_2.2.x86_64
systemd-journal-remote-239-31.el8_2.2.x86_64
systemd-udev-239-31.el8_2.2.x86_64


How reproducible:
Everytime.

Steps to Reproduce:
1. Create a service with a Requires on a non existent service.
2. Enable the service and reboot.


Actual results:
Service will have executed even though it's required unit is not present.

Expected results:
Service should not start.

Additional info:

Comment 2 RHEL Program Management 2022-04-13 07:27:33 UTC
After evaluating this issue, there are no plans to address it further or fix it in an upcoming release.  Therefore, it is being closed.  If plans change such that this issue will be fixed in an upcoming release, then the bug can be reopened.

Comment 9 Michal Sekletar 2023-06-01 09:46:04 UTC
This is now fixed upstream by https://github.com/systemd/systemd/pull/27852. However, we are not going to backport this into RHEL-8 unless there is a pressing customer need.


Note You need to log in before you can comment on or make changes to this bug.