Find out what clears the offline flag between the playback and the UID conflict reconciliation
Categories
(Calendar :: Internal Components, task)
Tracking
(Not tracked)
People
(Reporter: ndo84bw, Unassigned)
References
(Depends on 1 open bug)
Details
calCachedCalendar.playbackOfflineItems() clears the offline flag of an item whose create failed with calIErrors.UID_CONFLICT, and applyPendingUidConflicts() afterwards transfers the response onto the server's copy. A review of D309500 raised the concern that a crash between the two would lose the response, because the pending list only lives in memory, and suggested holding the flag until the reconciliation succeeded.
Measuring it did not confirm that mechanism. With the reset removed from the playback, the flag is already null by the time the reconciliation runs, in the same synchronisation pass - so something else clears it in between, and holding our own reset back changes nothing. Measured three times in calendar/test/unit/test_caldav_uidCollision.js: the flag reads 1 in the playback and null at the start of applyPendingUidConflicts().
Worth finding out where it is cleared, and whether an offline response actually survives a restart in that window. Until that is answered it cannot be said whether there is a data loss window at all.
Description
•