[Zope-dev] Re: [Zope] Bi-directional update of Data.fs

Steve Alexander steve@cat-box.net
Thu, 27 Jul 2000 12:59:41 +0100


Chris Withers wrote:
> 
> Steve Alexander wrote:
> > Don't see why not. When an object is changed, the new object is just
> > appended to the end of Data.fs. Unless you use undo, or you pack the
> > Data.fs.
> 
> You missed the problem ;-)
> 
> Technically, there is no problem...
> 
> Logically, what happens if one user updates and object on one machien
> and another user on another machines, after which you merge the
> data.fs's?
> 
> I'm thinkthing of the things which result in Notes Replication/Save
> conflicts...

What does Lotus Notes offer to do if you get such a conflict?

I'm probably talking rubbish in what follows, because I don't have much
of an idea how these things really work...

----
The server has a data.original.

You take a copy of this, called data.chris. You use this for a while,
and data gets appended to data.chris.

Someone else is using the server, and data.original gets appended to.

Later, you want to recombine the changes, so you do as follows:

Create a data.original.before_fork that is the data.original just before
you took the copy data.chris. (You can work this out by looking at the
modified data.original and data.chris).

Create a list of the combined transactions (in order of time, I guess)
that happened on the server, and to data.chris. Within one monsterous
transaction, apply the list of combined transactions using the usual
under-the-hood ZODB machinery. Use Jim's new conflict resolution
algorithm to try to settle conflicts. If a conflict can't be settled,
ask interactively, or apply some sort of policy (like "chris always
wins" for example) and log the lost changes.
----

--
Steve Alexander
Software Engineer
Cat-Box limited
http://www.cat-box.net