Hi,

#                worked in F31
# caused problems in F33

I upgraded a system from F31 to F33 via dnf distro-sync and it did boot extrem slow.

A systemd.debug-shell=1 && strace of systemd-tmpfiles  later, it looked like a massive resolve problem,
as next to any step from  the tmpfiles process created at least 2 dns lookups.

ls -la /dev/ took round about 20 seconds, also creating dns lookups.

Due to the dns lookuped hostname I could nail it down to having "mysql" to nsswitch.conf  like this:

passwd:      mysql files systemd
shadow:      mysql files
group:       mysql files systemd

System takes up to 10 Minutes to boot due to massive failing dns resolve calls for the configured mysql auth servername when enabled, when removed it boots in seconds.

>> The same config did not cause delays on F31.  <<

As this config is needed to do an enterprise like login schema based on mysql, I think the order of starting services and sockets needs a correction.

Can someone involved in Systemd take a look at it?

Those two processes are the only ones running besides pid 1, when the problem hits the boot process, which starts at switchroot() to the real sysroot:

|- .. root bash tty 9
|- systemd-tmpfiles
'- systemd-journald

the mysql server is ofcourse a remote server, otherwise it would not make any sense to use this , but it would not matter due to the lack of network at this point.

libnss-mysql.cfg looks like this, just to give an impression of what needs to go on:

$ cat /etc/libnss-mysql.cfg 

getpwnam    SELECT username,'x',uid,gid,name,homedir,shell \
            FROM users \
            WHERE username='%1$s' \
            LIMIT 1
getpwuid    SELECT username,'x',uid,gid,name,homedir,shell \
            FROM users \
            WHERE uid='%1$u' \
            LIMIT 1
getspnam    SELECT username,password,lstchg,min,max,warn,inact,expire,flag \
            FROM users \
            WHERE username='%1$s' \
            LIMIT 1
getpwent    SELECT username,'x',uid,gid,name,homedir,shell \
            FROM users
getspent    SELECT username,password,lstchg,min,max,warn,inact,expire,flag \
            FROM users
getgrnam    SELECT name,password,gid \
            FROM groups \
            WHERE name='%1$s' \
            LIMIT 1
getgrgid    SELECT name,password,gid \
            FROM groups \
            WHERE gid='%1$u' \
            LIMIT 1
getgrent    SELECT name,password,gid \
            FROM groups
memsbygid   SELECT username \
            FROM grouplist \
            WHERE gid='%1$u'
gidsbymem   SELECT gid \
            FROM grouplist \
            WHERE username='%1$s'

host remote.hostname
port 3XXX
database    XXXXXXXXXx
username    XXXXXXXXXXXXX
password    XXXXXXXXXXXX
#socket      /var/lib/mysql/mysql.sock

I'm pretty sure, this would also fail on F34, if the network is not  reachable when needed.

libnss-mysql updated from 1.5-34 to 1.5-37 and nss from 3.58 to 3.63, just in case, nss caused this behaviour.

Of

best regards,
Marius Schwarz