** Description changed: I noticed quite a long time to login to some of my systems via ssh (or scp). Investigating lead me to find out that the '50-motd-news' file (/etc/update-motd.d/50-motd-news) was the primary cost. In line 108 [1] it does something like: - curl --connect-timeout "5" --max-time "5" -A "..." -o - https://motd.ubuntu.com + curl --connect-timeout "5" --max-time "5" -A "..." -o - https://motd.ubuntu.com The systems I'm seeing this on are in a lab and do not have access to https://motd.ubuntu.com. The way the lab is configured, they just end up timing out. So every scp or ssh connection or other path to trigger update-motd will cost 5 seconds. + + + ======= SRU ======= + + [ IMPACT ] + + This bug affects Ubuntu 17.04 systems which cannot reach the internet + (more specifically, https://motd.ubuntu.com). There is a bug in the + implementation of /etc/update-motd.d/50-news whereby the failure of the + curl fetch of the motd news causes a 5-second delay. This should not be + the case. By design, the motd is fetched in the background, by a + systemd timer, and refreshed every ~12 hours, also in the background. + On login, the script should just cat the cache file. If the cache file + isn't found, then it will try to fetch a new motd. In the firewalled + system case, the background fetch failed, AND didn't create an empty + file. The fix as attached simply ensures that an empty file is created + if the curl fetch fails. This eliminates the login delay and solves the + bug. Every 12 hours, the curl will be retried, quietly in the + background, so if the curl failure happened for temporary reasons, it'll + recover, gracefully, eventually. + + [ TEST CASE ] + + You can either test this on a firewalled system. Or, if you can hack an + entry in your local /etc/hosts for motd.ubuntu.com for an invalid IP + address. Without the fix, you'll experience a 5 second delay on login. + With the fix, you'll login immediately. + + Failure case: + + $ lxc launch ubuntu:17.04 LP1691901 + $ lxc exec LP1691901 bash + # ssh-import-id kirkland + # echo 192.168.0.0 motd.ubuntu.com >> /etc/hosts + # rm -f /var/cache/motd-news + # exit + $ time ssh root@$(lxc list | grep LP1691901 | awk '{print $6}') true + real 0m5.333s + user 0m0.016s + sys 0m0.000s + + Apply the fix. Note that it'll take one run (might be a login, a + reboot, or the 12-hourly timer) to create the file: + + $ time ssh root@$(lxc list | grep LP1691901 | awk '{print $6}') true + real 0m5.357s + user 0m0.016s + sys 0m0.004s + $ time ssh root@$(lxc list | grep LP1691901 | awk '{print $6}') true + real 0m0.316s + user 0m0.008s + sys 0m0.008s + + [ REGRESSION ] + + This is a super simple, safe, 2-line fix with minimal regression + potential: + + diff -Nru base-files-9.6ubuntu13/update-motd.d/50-motd-news base-files-9.6ubuntu13.1/update-motd.d/50-motd-news + --- base-files-9.6ubuntu13/update-motd.d/50-motd-news 2017-02-15 13:54:04.000000000 -0600 + +++ base-files-9.6ubuntu13.1/update-motd.d/50-motd-news 2017-06-29 09:22:31.000000000 -0500 + @@ -111,6 +111,8 @@ + safe_print "$NEWS" + # Try to update the cache + safe_print "$NEWS" 2>/dev/null >$CACHE || true + + else + + : > "$CACHE" + fi + done + rm -f "$NEWS" "$NEWS.err" + -- [1] https://git.launchpad.net/~usd-import-team/ubuntu/+source/base-files/tree/update-motd.d/50-motd-news?h=applied/ubuntu/zesty#n108 ProblemType: Bug DistroRelease: Ubuntu 17.04 Package: base-files 9.6ubuntu13 ProcVersionSignature: User Name 4.10.0-21.23-generic 4.10.11 Uname: Linux 4.10.0-21-generic x86_64 ApportVersion: 2.20.4-0ubuntu4 Architecture: amd64 Date: Fri May 19 01:11:30 2017 Ec2AMI: ami-0000004f Ec2AMIManifest: FIXME Ec2AvailabilityZone: nova Ec2InstanceType: m1.small Ec2Kernel: unavailable Ec2Ramdisk: unavailable ProcEnviron: - TERM=xterm-256color - PATH=(custom, no user) - XDG_RUNTIME_DIR=<set> - LANG=en_US.UTF-8 - SHELL=/bin/bash + TERM=xterm-256color + PATH=(custom, no user) + XDG_RUNTIME_DIR=<set> + LANG=en_US.UTF-8 + SHELL=/bin/bash SourcePackage: base-files UpgradeStatus: No upgrade log present (probably fresh install) mtime.conffile..etc.update-motd.d.50-motd-news: 2017-05-19T01:10:25.572110
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1691901 Title: [SRU] 50-motd-news costs 5 seconds every login on firewalled systems To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/base-files/+bug/1691901/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs