systemd-stable icon indicating copy to clipboard operation
systemd-stable copied to clipboard

Regression caused by wait-online backport f4831559171 ff.

Open Whissi opened this issue 2 years ago • 2 comments

systemd version the issue has been seen with

252.17-1~deb12u1

Used distribution

Debian 12.2

Linux kernel version used

6.1.0-13-amd64

CPU architectures issue was seen on

x86_64

Component

systemd-networkd-wait-online

Expected behaviour you didn't see

systemd-networkd-wait-online should exit with success (zero exit code) when neither '--any' nor '--interface' options specified and at least one of the interfaces must be in configured state.

Unexpected behaviour you saw

$ /lib/systemd/systemd-networkd-wait-online
Timeout occurred while waiting for network connectivity.
$ networkctl
IDX LINK TYPE     OPERATIONAL SETUP
  1 lo   loopback carrier     unmanaged
  2 eth0 ether    routable    configured
  3 eth1 ether    carrier     configured
  4 eth2 ether    off         unmanaged
  5 eth3 ether    off         unmanaged

5 links listed.

Steps to reproduce the problem

Configure one interface with a static IP address using systemd-networkd. Maybe you need multiple interfaces and at least one unmanaged interface to hit this.

Additional program output to the terminal or log subsystem illustrating the issue

$ SYSTEMD_LOG_LEVEL=debug /lib/systemd/systemd-networkd-wait-online
Found link 5
Found link 4
Found link 3
Found link 2
Found link 1
eth0: link is configured by networkd and online.
eth2: link is not managed by networkd.
eth1: Operational state 'carrier' is not in range ['degraded':'routable']
Timeout occurred while waiting for network connectivity.

Whissi avatar Oct 12 '23 01:10 Whissi

I upraded from Debian 12.1 to Debian 12.2 using apt-get dist-upgrade which upgraded systemd from 252.12-1~deb12u1 to 252.17-1~deb12u1.

After reboot I noticed that systemd-networkd-wait-online.service failed.

Calling /lib/systemd/systemd-networkd-wait-online manually showed the same problem.

/lib/systemd/systemd-networkd-wait-online --any or /lib/systemd/systemd-networkd-wait-online -i eth0 worked.

I went to https://github.com/systemd/systemd-stable/compare/v252.12...v252.17 and noticed few commits touching wait-online, for example https://github.com/systemd/systemd-stable/commit/f4831559171033ab044758e7fd68627e3bfe84a5

It still mentions that when you call wait-online with neither --any nor --interface option (which is the default in Debian) that the program should still exit with success. But as shown, it doesn't.

I restored systemd-networkd-wait-online from my backup (252.12-1~deb12u1) and it still works as expected:

$ SYSTEMD_LOG_LEVEL=debug ./systemd-networkd-wait-online
Found link 5
Found link 4
Found link 3
Found link 2
Found link 1
eth3: link is not managed by networkd (yet?).
eth2: link is not managed by networkd (yet?).
eth0: link is configured by networkd and online.
eth1: Operational state 'carrier' is not in range ['degraded':'routable']
lo: link is ignored

So I believe that the mentioned change is causing a regression.

Whissi avatar Oct 12 '23 01:10 Whissi

@yuwata Can you help here?

Whissi avatar Nov 09 '23 13:11 Whissi