[Akonadi] [Bug 338570] Akonadi Dav Resource: Missing Conflict Resolution

Ingo Ratsdorf ingo at envirology.co.nz
Sun Aug 31 22:52:08 BST 2014


Ingo Ratsdorf <ingo at envirology.co.nz> changed:

           What    |Removed                     |Added
                 CC|                            |ingo at envirology.co.nz

--- Comment #1 from Ingo Ratsdorf <ingo at envirology.co.nz> ---
The way the resource is designed is the following: 
Say we delete an event from Calendar in KOrganizer:
1) Akonadi calls item-deleted function in resource
2) Resource grabs url and etag and send a delete request to the caldav server
together with an if-match header and the stored etag.
3) If everything worked, resource deletes item from akonadi collection

Now comes the tricky bit:
If the above DOES NOT WORK (because the item was changed meanwhile before we
sent that delete request), the resource gets a 412 error back from the server
and calls its retry function and that does emit broken, offline.

So in order for this to work, we need to introduce conflict resolution
handling. Ie in the above, have three exclusive options:
1) ask the user for input
2) delete anyway (we are the boss)
3) reload from server.

This currently does not work as the dav job is not given to the retry function,
only the error message. 
In the above example of deleting an element, the resource should probably do
(either or):

1) Ask user for input and then do one of the below
2) Server wins: ignore delete request and start new job to retrieve updated
item from DAV server - if that fails, either ignore silently or notify user
3) Client wins: Restart the job without the if-match header, delete the item.
If that fails, delete item from collection only, and/or notify user

You are receiving this mail because:
You are the assignee for the bug.

More information about the Kdepim-bugs mailing list