From 78e6ae2fec5b7bcdd5348e302e835ef7639507cc Mon Sep 17 00:00:00 2001 From: Joel Thomas Date: Wed, 17 Jun 2026 11:30:15 +0530 Subject: [PATCH] Fix cache refresh from overwriting modified records Changes: - Added a check for RecordState::MODIFIED in DataStore::refreshCache(). - Preserved modified cache records during refresh instead of overwriting them with datastore values. - Discarded refreshed records when a corresponding cached record has pending changes. Fixes #2077 --- .../Trenser.VehicleServiceSystem/datastores/DataStore.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/datastores/DataStore.h b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/datastores/DataStore.h index 021d831..03eb0eb 100644 --- a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/datastores/DataStore.h +++ b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/datastores/DataStore.h @@ -220,6 +220,12 @@ void DataStore::refreshCache(util::Map>& cac if (oldIndex != -1) { TrackedRecord& oldRecord = oldCache.getValueAt(oldIndex); + if (oldRecord.state == RecordState::MODIFIED) + { + delete refreshedRecord.data; + cache.insert(id, oldRecord); + continue; + } *oldRecord.data = *refreshedRecord.data; oldRecord.slotIndex = refreshedRecord.slotIndex; oldRecord.state = refreshedRecord.state;