On Mon, May 28, 2018 at 12:06 AM, Mark Hammond wrote:

In general, this should cause clients to act as though they were just
> connected to Sync - they'll do a full reconcile etc. Or more accurately,
> it will probably behave as though the client was disconnected on the date
> of the backup and reconnected today.
>
> While I can see this approach being useful for users who are treating sync
> as a backup (ie, where they've lost the only syncing device, so any data is
> better than no data), there's a risk for accounts where active clients
> exist, particularly around the resurrection of deleted items, but also for
> reconciliation in general (where Sync may end up deciding the server data
> should be taken over the remote data)
>
> I guess we could decide the damage is likely to be minimal if the backup
> was recent enough, but the outcome will almost certainly never be
> deterministic as it is likely to depend on exactly how recent the backup
> is, what device ends up doing a first sync and when it previously synced.
>
> This is much easier to rationalize about for tabs because each tab record
> is written to by exactly 1 device - there's no opportunity for a stale
> client to screw up the record for a different device.


We could potentially count the clients records and only restore users with
a single client.

On Mon, May 28, 2018 at 12:06 AM, Mark Hammond <[email protected]> wrote:

> On 28/05/2018 1:05 pm, Ryan Kelly wrote:
>
>> Is this true of other collections in general?  In particular, I'm
>> wondering about the possibilities of recovering the user's data atop a
>> point-in-time backup using this method, along the following lines:
>>
>> * We take regular backup snapshots of the user's data on the server
>> * Something bad happens to a storage node, and we want to restore the
>> user's data from a backup, so we:
>>      * Down the node, having it return 503s with backoff
>>      * Restore the db from backup
>>      * Futz with their meta/global to remove the syncIDs while leaving
>> other data intact
>>      * Restore the node to service
>> * On its next sync, the client detects that the syncIDs have changed and
>> does a full re-sync
>>
>
> In general, this should cause clients to act as though they were just
> connected to Sync - they'll do a full reconcile etc. Or more accurately, it
> will probably behave as though the client was disconnected on the date of
> the backup and reconnected today.
>
> While I can see this approach being useful for users who are treating sync
> as a backup (ie, where they've lost the only syncing device, so any data is
> better than no data), there's a risk for accounts where active clients
> exist, particularly around the resurrection of deleted items, but also for
> reconciliation in general (where Sync may end up deciding the server data
> should be taken over the remote data)
>
> I guess we could decide the damage is likely to be minimal if the backup
> was recent enough, but the outcome will almost certainly never be
> deterministic as it is likely to depend on exactly how recent the backup
> is, what device ends up doing a first sync and when it previously synced.
>
> This is much easier to rationalize about for tabs because each tab record
> is written to by exactly 1 device - there's no opportunity for a stale
> client to screw up the record for a different device.
>
> (That said though, there might be scope to change client's behaviour - if
> each client knew that it was dealing with restored data it might be able to
> make better decisions, but that might end up being a very large change -
> eg, it might require all clients to move to tombstones and always persist
> those tombstones locally, some way to avoid "old" clients doing the first
> "recovery sync", etc)
>
> Mark
>
_______________________________________________
Sync-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/sync-dev

Reply via email to