diff --git a/src/blackmisc/datacache.cpp b/src/blackmisc/datacache.cpp index fd25a7eaf..c15490dd2 100644 --- a/src/blackmisc/datacache.cpp +++ b/src/blackmisc/datacache.cpp @@ -293,6 +293,9 @@ namespace BlackMisc auto msg = m_cache->loadFromFiles(persistentStore(), m_cache->m_revision.keysWithNewerTimestamps(), baseline.toVariantMap(), newValues, m_cache->m_revision.timestampsAsString()); newValues.setTimestamps(m_cache->m_revision.newerTimestamps()); + auto missingKeys = m_cache->m_revision.keysWithNewerTimestamps().subtract(newValues.keys()); + if (! missingKeys.isEmpty()) { m_cache->m_revision.writeNewRevision({}, missingKeys); } + msg.setCategories(this); CLogMessage::preformatted(msg); m_deferredChanges.insert(newValues); @@ -412,7 +415,7 @@ namespace BlackMisc return guard; } - void CDataCacheRevision::writeNewRevision(const QMap &i_timestamps) + void CDataCacheRevision::writeNewRevision(const QMap &i_timestamps, const QSet &excludeKeys) { QMutexLocker lock(&m_mutex); @@ -433,6 +436,7 @@ namespace BlackMisc { if (it.value()) { timestamps.insert(it.key(), it.value()); } } + for (const auto &key : excludeKeys) { timestamps.remove(key); } QJsonObject json; json.insert("uuid", m_uuid.toString()); diff --git a/src/blackmisc/datacache.h b/src/blackmisc/datacache.h index a72a05ed4..ffd3506ad 100644 --- a/src/blackmisc/datacache.h +++ b/src/blackmisc/datacache.h @@ -104,7 +104,7 @@ namespace BlackMisc LockGuard beginUpdate(const QMap ×tamps, bool updateUuid = true, bool pinsOnly = false); //! During update, writes a new revision file with new timestamps. - void writeNewRevision(const QMap ×tamps); + void writeNewRevision(const QMap ×tamps, const QSet &excludeKeys = {}); //! Release the revision file lock and mark everything up-to-date (called by LockGuard destructor). //! \param keepPromises Don't break pending promises.