Ok, I guess we are conflating different kinds of flag days here. A major
flag day is when you need user involvement to move forward, such as
creating new Firefox accounts.
What you are describing is an upgrade event, which can be solved through
parallel operations of two services (or two versions of the service).
How well and how invisible we will handle such events depends on how
much we want to invest in the technical solution, but once we went
through one flag day and have the data stored in cleartext we can do
arbitrary storage format and wire protocol format changes.
Worst case we have to operate two services against the same data store
(reving the wire format), or the same service against two data stores
that we cross replicate (reving the storage format). I have yet to hear
any argument why we would have two user visible flag days.
Andreas
Richard Newman wrote:
Brief reply to this, as I try to preserve the non-working weekend:
Sync 1.1 has essentially no upgrade paths. None whatsoever for wire version
changes, awful support for adding new engines, and no upgrade mechanism at all
that respects durability.
The best it can do is blow away all of your server data and lock out all of the other
clients until they upgrade, which was something we weren't willing to do since Firefox 4.
(As such, most of the Sync 2.0 "storage format 6" bugs are saved-up
improvements that were never worth breaking client compatibility. Sync's data formats
haven't changed since 2010.)
Assuming a definition of "flag day" as something like "no client interop across this
event horizon; upgrade required to continue working", then any change to Sync's wire protocol
or storage format would be such a thing. The clients would have no way to negotiate versions, no
way to stage storage format changes, etc. etc.
Even if we put in all of the expected amount of effort to build a service
discovery framework attached to Firefox Account, and switched to a better
storage system by using that (deprecate the old, automatically enable the new),
it would meet the definition of a flag day because it would partition your
devices as they hit the migration point: the old ones wouldn't have client code
for the new system, so they couldn't follow the breadcrumbs. (Even worse if we
don't ship that service discovery framework in v1!)
As I understand the approximate plan of record, we'll be addressing these
limitations by replacing the high-level protocol with one that understands
protocol and storage versioning and negotiation, with the role of the Sync 1.1
and 2.0 codebases being one of code reuse wherever possible. That way we can
rev protocols and storage formats as needed, without unilaterally locking out
clients or wiping data. (And our proposed storage protocols -- treesync and
queuesync -- both address much of the durability-defeating aspects of both Sync
1.1 and 2.0.)
----- Original Message -----
From: "Andreas Gal"<andreas....@gmail.com>
To: "Brian Warner"<war...@mozilla.com>
Cc: sync-dev@mozilla.org
Sent: Friday, August 9, 2013 8:57:30 PM
Subject: Re: The Sync 1.1 elephant^H^H^H^H^H^H option
Help me understand why we need a second flag day when changing wire
formats or storage formats.
Andreas
Sent from Mobile.
On Aug 9, 2013, at 18:02, Brian Warner<war...@mozilla.com> wrote:
On 8/9/13 4:37 PM, Lloyd Hilaiel wrote:
So I'd like to open a venting thread here. Let's capture once and for
all the real, actual, user facing or implementation complexity
downsides of implementing a new authentication flow and grafting it
onto Sync 1.1.
I expect rnewman will express this better than I can, but he mentioned
this morning that we basically get one flag day. It's not the super-bad
"everybody must change at the exactly same time" kind of flag day. But
it's a still-kinda-bad "everybody must do a one-way account upgrade
during some multi-month overlap between new-servers-launched and
old-servers-shut-down window" upgrade/flag-day.
If we use that upgrade to get from Sync1.1+OldAuth to Sync1.1+NewAuth,
we'll land on a system that is known to be fragile, and about which I've
heard scalability/ops problems. To upgrade from there to a more
stable/scalable protocol, we'd need a second flag day, and that'd be too
embarrasing to pull off.
cheers,
-Brian
_______________________________________________
Sync-dev mailing list
Sync-dev@mozilla.org
https://mail.mozilla.org/listinfo/sync-dev
_______________________________________________
Sync-dev mailing list
Sync-dev@mozilla.org
https://mail.mozilla.org/listinfo/sync-dev
_______________________________________________
Sync-dev mailing list
Sync-dev@mozilla.org
https://mail.mozilla.org/listinfo/sync-dev