[Kolab-devel] About conflicts and the sync concept (Re: Kolab Webservice initiative)

Bernhard Reiter bernhard at intevation.de
Fri Dec 2 15:22:06 CET 2011


Hello Hendrik,

Am Thursday, 17. November 2011 15:24:11 schrieb Hendrik Helwich:
> Am Mittwoch, 16. November 2011 11:34:06 schrieb Bernhard Reiter:

> > We already have a "transaction concept", it says that you should
> > create first and then delete. If the connection is interrupted
> > after create, there are two or more objects with the same id for all
>
> you also can have duplicates on the server if two clients are updating the
> same item on the server concurrently and didn't notice the conflict because
> of that.

Yes, it is a normal situation, especially with clients that have an offline 
capability. The two client situation you mention is the same that I am 
mentioning in the next sentence that you have cited: :)

> > clients. And all clients need to be able to resolve this situation
> > because they need to do this anyway if two people edit the same object.
>
> I agree that for the synchronization conflicts every Kolab client needs to
> have a strategy how this should be solved (e.g. server wins).

In case of changes in the contents, one side winning would lose data
of the user. So the Kolab Concept mandates that the user most resolve the 
situation interactively. For a client that is not interactive, it must leave 
both items there for an interactive client to resolve. It has two ways to 
doing so: keeping the same id or labeling one object to a copy with a new id.

> But it can also happen that on the Kolab server there are more than one
> item with the same ID (e.g. by two clients updating an item concurrently or
> an error occurs while a client is updating an item).

Again that is the same situation, the Kolab id of the object is the same.
The id can be seen in the subject of the email.

> A Kolab client needs to have also a strategy for this case (e.g. take
> highest UID). This is an example of the addressed concurrency conflicts
> which could be avoided with a transaction concept that supports isolation.

I am not sure which id you are refering to. The IMAP id or the Kolab object 
id? Probably the IMAP id. If the contents itself of the two objects is the 
same, then yes, the client should just delete one of them.  Otherwise a 
higher IMAP id does not necessarily mean better data. It might be that the 
client writing the object first in a concurrency situation has the better 
data. Only the user can decide this.

> > Often only a human an decide this interactively, this is a reason why all
> > Kolab client SHOULD have a way to interact with the user.
>
> Unfortunately this is not possible for all clients. E.g. the Syncphony
> project (uses Kolab WS) has not the possibility to show a dialog on the
> many supported mobile phones.

True, I can imagine clients that cannot do this.
In this case they MUST leave two objects there as explained above.

> This is the same for the evolution-kolab project where also only a
> background service is adapted which has not the possibility to open a
> dialog in th GUI application.

As Evolution is an interactive application, it sure is possible to bring up 
interaction somehow. Of course if the project doing the Kolab Client 
capabilities for Evolution does not have the ressources to implement this 
through out the whole structure of Evolution, it will stay a structural 
problem. Can you tell us more about the goals of the 
evolution-kolab "project" in the narrorer sense? When will it be concluded?
How does the evolution-kolab initiative is going to continue then?

> > > Maybe the point would be more clear if it is extended that this does
> > > not solve typical important synchronization conflicts due to cached
> > > data?
> >
> > That would be helpful of course as it makes the aim clear.
> > I am not sure that the clarified aim can be reached, though.
>
> Why?

Mainly because I do not fully understand it, I guess. In order for it to be 
implementable it also need to be conceptually possible.

Maybe we even should not call the normal situation that two people edit the 
same object a "conflict". It is a conflict, but not in the sense of database 
locking as I would say. It is a contents or human level conflict. This 
contents conflict cannot be solved.

I believe the value in a Kolab Webservice would be to make some thing more 
accessible. Any client library would also help. However the interface has to 
make sure the necesary resolution of human contents races can be 
interactively resolved if interaction is at all possible.

Best Regards,
Bernhard



-- 
Managing Director + Owner: www.Intevation.net <- A Free Software Company
Kolabsys.com: Board Member          FSFE.org: Founding GA Member
Intevation GmbH, Osnabrück, DE; Amtsgericht Osnabrück, HRB 18998
Geschäftsführer Frank Koormann, Bernhard Reiter, Dr. Jan-Oliver Wagner
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.kolab.org/pipermail/devel/attachments/20111202/b16785ba/attachment.sig>


More information about the devel mailing list