With a closer look I ended up running this loop while looking at systemd
debug logs:

sudo snap remove --purge snapd && sudo systemctl daemon-reload && sudo
systemctl restart snapd && snap version && sudo apt update && echo
"ALOHA: installing snapd" | systemd-cat && sudo snap install snapd &&
echo "ALOHA: done installing snapd" | systemd-cat


This causes the following log file to show up:

mar 13 13:02:52 ciri systemd[1]: Looking for unit files in (higher priority 
first):
mar 13 13:02:52 ciri systemd[1]:         /etc/systemd/system.control
mar 13 13:02:52 ciri systemd[1]:         /run/systemd/system.control
mar 13 13:02:52 ciri systemd[1]:         /run/systemd/transient
mar 13 13:02:52 ciri systemd[1]:         /run/systemd/generator.early
mar 13 13:02:52 ciri systemd[1]:         /etc/systemd/system
mar 13 13:02:52 ciri systemd[1]:         /etc/systemd/system.attached
mar 13 13:02:52 ciri systemd[1]:         /run/systemd/system
mar 13 13:02:52 ciri systemd[1]:         /run/systemd/system.attached
mar 13 13:02:52 ciri systemd[1]:         /run/systemd/generator
mar 13 13:02:52 ciri systemd[1]:         /usr/local/lib/systemd/system
mar 13 13:02:52 ciri systemd[1]:         /usr/lib/systemd/system
mar 13 13:02:52 ciri systemd[1]:         /run/systemd/generator.late
mar 13 13:02:52 ciri systemd[1]: Modification times have changed, need to 
update cache.

The message at the bottom of the log comes from systemd's
src/basic/unit-file.c

bool lookup_paths_timestamp_hash_same(const LookupPaths *lp, uint64_t 
timestamp_hash, uint64_t *ret_new) {
        struct siphash state;

        siphash24_init(&state, HASH_KEY.bytes);

        STRV_FOREACH(dir, lp->search_path) {
                struct stat st;

                if (lookup_paths_mtime_exclude(lp, *dir))
                        continue;

                /* Determine the latest lookup path modification time */
                if (stat(*dir, &st) < 0) {
                        if (errno == ENOENT)
                                continue;

                        log_debug_errno(errno, "Failed to stat %s, ignoring: 
%m", *dir);
                        continue;
                }

                siphash24_compress_usec_t(timespec_load(&st.st_mtim), &state);
        }

        uint64_t updated = siphash24_finalize(&state);
        if (ret_new)  
                *ret_new = updated;
        if (updated != timestamp_hash)
                log_debug("Modification times have changed, need to update 
cache.");
        return updated == timestamp_hash;
}                     

Modification of mtime of any of the directories above is sufficient to
cause this to differ.

I've patched systemd to tell us why systemd thinks it needs to be
reloaded (additional printfs) to get an idea what might be the trigger
that is left stale.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2055239

Title:
  Warning: The unit file, source configuration file or drop-ins of {apt-
  news,esm-cache}.service changed on disk. Run 'systemctl daemon-reload'
  to reload units.

To manage notifications about this bug go to:
https://bugs.launchpad.net/snapd/+bug/2055239/+subscriptions


-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to