Open Bug 2061859 Opened 10 days ago Updated 4 days ago

Find out what clears the offline flag between the playback and the UID conflict reconciliation

Categories

(Calendar :: Internal Components, task)

task

Tracking

(Not tracked)

UNCONFIRMED

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.

Depends on: 1717401
You need to log in before you can comment on or make changes to this bug.