Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » [CDO] recommendations for handling conflicts between multiple cdo-server clients
[CDO] recommendations for handling conflicts between multiple cdo-server clients [message #517261] Fri, 26 February 2010 17:39 Go to next message
Mark Geib is currently offline Mark GeibFriend
Messages: 432
Registered: July 2009
Senior Member
In a model designed to store real-time data what is the best way to
handle conflicts where a container object has new children being added
by multiple repository clients. We have many remote sources of real-time
data "pumping" data to clients via a messaging framework that result in
updates to the emf model for display by other GUI clients. However, due
the large amount of the data we have multiple clients processing the
messages and updating the model. There are cases where a message
contains data for a new model object that is created and added to its
container. This container is "shared" by all the message processing
clients. Since we batch the model updates and only do save every N
updates we will often have a save fail due to the fact the container
object has been updated by another client so the version of our
container is not valid.

We are not sure how to best handle the exception. Do we somehow update
the container, then replay all the commands since the last successful
save. Or destroy the CDO transaction and create a new one completely.?

Thanks for ANY suggestions,
Mark
Re: [CDO] recommendations for handling conflicts between multiple cdo-server clients [message #517354 is a reply to message #517261] Sat, 27 February 2010 04:44 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6682
Registered: July 2009
Senior Member
Hi Mark,

I think a conflict mitigation strategy comprises three things:

1) Reduce the potential for conflicts. If possible, try to add more
containers.

2) Resolve conflicts locally with a CDOConflictResolver. Maybe you're
interested in developing a subclass of ThreeWayMerge that resolves
certain feature-level like conflicting additions to many-valued
features? Such a mechanism could be of common interest. Let me know if
you need more infos.

3) Due to race conditions there will always be a rest potential for
conflicts that are only recognized by the repository when processing
commits. You will always have to expect these exceptions on the client
side. Ideally you'd rollback the transaction, re-apply your changes and
commit again.

Cheers
/Eike

----
http://thegordian.blogspot.com
http://twitter.com/eikestepper




Am 26.02.2010 18:39, schrieb Mark Geib:
> In a model designed to store real-time data what is the best way to
> handle conflicts where a container object has new children being added
> by multiple repository clients. We have many remote sources of real-time
> data "pumping" data to clients via a messaging framework that result in
> updates to the emf model for display by other GUI clients. However, due
> the large amount of the data we have multiple clients processing the
> messages and updating the model. There are cases where a message
> contains data for a new model object that is created and added to its
> container. This container is "shared" by all the message processing
> clients. Since we batch the model updates and only do save every N
> updates we will often have a save fail due to the fact the container
> object has been updated by another client so the version of our
> container is not valid.
>
> We are not sure how to best handle the exception. Do we somehow update
> the container, then replay all the commands since the last successful
> save. Or destroy the CDO transaction and create a new one completely.?
>
> Thanks for ANY suggestions,
> Mark
>


Re: [CDO] recommendations for handling conflicts between multiple cdo-server clients [message #517643 is a reply to message #517354] Mon, 01 March 2010 15:18 Go to previous message
Mark Geib is currently offline Mark GeibFriend
Messages: 432
Registered: July 2009
Senior Member
Eike,

Thanks for the reply.
I am very interested in hearing more about the CDOConflictResolver.

Mark.

On 02/26/2010 09:44 PM, Eike Stepper wrote:
> Hi Mark,
>
> I think a conflict mitigation strategy comprises three things:
>
> 1) Reduce the potential for conflicts. If possible, try to add more
> containers.
>
> 2) Resolve conflicts locally with a CDOConflictResolver. Maybe you're
> interested in developing a subclass of ThreeWayMerge that resolves
> certain feature-level like conflicting additions to many-valued
> features? Such a mechanism could be of common interest. Let me know if
> you need more infos.
>
> 3) Due to race conditions there will always be a rest potential for
> conflicts that are only recognized by the repository when processing
> commits. You will always have to expect these exceptions on the client
> side. Ideally you'd rollback the transaction, re-apply your changes and
> commit again.
>
> Cheers
> /Eike
>
> ----
> http://thegordian.blogspot.com
> http://twitter.com/eikestepper
>
>
>
>
> Am 26.02.2010 18:39, schrieb Mark Geib:
>> In a model designed to store real-time data what is the best way to
>> handle conflicts where a container object has new children being added
>> by multiple repository clients. We have many remote sources of real-time
>> data "pumping" data to clients via a messaging framework that result in
>> updates to the emf model for display by other GUI clients. However, due
>> the large amount of the data we have multiple clients processing the
>> messages and updating the model. There are cases where a message
>> contains data for a new model object that is created and added to its
>> container. This container is "shared" by all the message processing
>> clients. Since we batch the model updates and only do save every N
>> updates we will often have a save fail due to the fact the container
>> object has been updated by another client so the version of our
>> container is not valid.
>>
>> We are not sure how to best handle the exception. Do we somehow update
>> the container, then replay all the commands since the last successful
>> save. Or destroy the CDO transaction and create a new one completely.?
>>
>> Thanks for ANY suggestions,
>> Mark
>>
Previous Topic:EMF: Export Ecore Model to XML Schema - xsd:ID not set
Next Topic:[Validation]How to validate my diagrams without opening the diagram editor
Goto Forum:
  


Current Time: Thu Apr 25 07:20:33 GMT 2024

Powered by FUDForum. Page generated in 0.03863 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top