From b8563fb346e8dcf7d395542f35627fe66330e383 Mon Sep 17 00:00:00 2001 From: Chris Adams Date: Mon, 20 Jan 2020 14:23:12 +1000 Subject: [PATCH] [buteo-sync-plugins-social] Properly store the mapping between gcalId and local UID. Contributes to JB#47783 Previously, we always stored an empty gcalId in the mapping. This could result in "known" partial upsync artifacts being ignored and re-upsynced, causing server-side event duplication. --- src/google/google-calendars/googlecalendarsyncadaptor.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/google/google-calendars/googlecalendarsyncadaptor.cpp b/src/google/google-calendars/googlecalendarsyncadaptor.cpp index a6ef57f..ed785a7 100644 --- a/src/google/google-calendars/googlecalendarsyncadaptor.cpp +++ b/src/google/google-calendars/googlecalendarsyncadaptor.cpp @@ -1691,8 +1691,8 @@ QList GoogleCalendarSyncAdaptor::determ QString gcalId = gCalEventId(incidence); if (gcalId.isEmpty() && upsyncedUidMapping.contains(incidence->uid())) { // partially upsynced artifact. It may need to be updated with gcalId comment field. - partialUpsyncArtifactsNeedingUpdate.insert(gcalId); gcalId = upsyncedUidMapping.value(incidence->uid()); + partialUpsyncArtifactsNeedingUpdate.insert(gcalId); } if (gcalId.size() && eventPtr) { SOCIALD_LOG_TRACE("Have local event:" << gcalId << "," << eventPtr->uid() << ":" << eventPtr->recurrenceId().toString()); @@ -1945,6 +1945,9 @@ QList GoogleCalendarSyncAdaptor::determ SOCIALD_LOG_DEBUG("Discarding partial upsync artifact local addition:" << eventId); discardedLocalAdditions++; continue; + } else { + // should never be hit. bug in plugin code. + SOCIALD_LOG_ERROR("Not discarding partial upsync artifact local addition due to data inconsistency:" << eventId); } } QString gcalId = gCalEventId(event);