[Discover] [Bug 521682] Updates stuck at "Fetching updates" since update to Plasma 6.7 (not Snap-related)

"Dolphin Whisperer" <[email protected]>
Newsgroups gmane.comp.kde.devel.bugs
Message-ID <[email protected]/>
https://bugs.kde.org/show_bug.cgi?id=521682

--- Comment #65 from Dolphin Whisperer <[email protected]> ---
orthogonaleety's root-cause analysis in comment 61/62
(https://invent.kde.org/orthogonaleety/discover/-/commit/89ad42afbd19e70d18a1aad1223ecb7704c32096)
is right, and the patch correctly calls `setSettingUp(false)` unconditionally —
but it doesn't actually fix the stuck spinner: `isFetchingUpdates()` reads a
*cached* value (`m_isFetchingUpdates.m_value`), which is only ever refreshed by
calling `EmitWhenChanged<bool>::reevaluate()`. The patch instead emits
`fetchingChanged()` directly, bypassing that recompute step entirely — so the
signal fires, but `isFetchingUpdates()` still returns the same stale cached
`true` afterward. `ResourcesUpdatesModel::refreshFetching()` re-reads
`isFetchingUpdates()` in response to the signal and sees the same stale value.

Fix: call `m_isFetchingUpdates.reevaluate()` instead (it emits
`fetchingChanged()` itself, but only after actually recomputing the value):

```cpp
void StandardBackendUpdater::refreshUpdateable()
{
    if (!m_backend->isValid()) {
        qWarning() << "Invalidated backend, deactivating" << m_backend->name();
        const bool wasSettingUp = m_settingUp;
        setSettingUp(false);
        if (wasSettingUp) {
            Q_EMIT progressingChanged(isProgressing());
        }
        m_isFetchingUpdates.reevaluate();
        return;
    }
    ...
```

I verified this with a regression test added to `DummyBackend`
(`testFetchingClearsAfterEarlyInvalidation`, simulating a backend that
invalidates before its updater ever completes setup — the same failure mode as
`FwupdBackend` under a masked `fwupd.service`):

- Unpatched master: FAIL — `fetchingChanged` never fires
- Patch from comment 61/62: FAIL — signal fires, but `isFetchingUpdates()` is
still `true`
- This patch: PASS

Anecdotally, on my machine (Fedora, patched build run uninstalled in its own
D-Bus session alongside the installed 6.7.3 package, same PackageKit daemon and
system state) the patched build showed "Up to date" where 6.7.3 stayed stuck —
consistent with the above but obviously not independently checkable by anyone
else.

Full diff (StandardBackendUpdater.cpp fix + DummyBackend test hook + regression
test) attached. Happy to open this as a proper MR if someone can point me at
the right target branch, or if a maintainer wants to take it from here given
the number of duplicates.

-- 
You are receiving this mail because:
You are watching all bug changes.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.