I am a little confused about command processor conflict detection in general and how it is compared/contrasted against optimistic concurrency control. In a Denver workshop last week, Allard suggested (unless I mis-understood him) that he never sees the case that calls for optimistic concurrency control. For clarity, what I am calling optimistic concurrency control is when I include a @TargetAggregateVersion annotation on one of the property/methods of a given command and upon command execution the framework ensures that the value of the annotated property/method matches the value of the latest event sequence for the given aggregate.
- So what am I missing? To me it seems like the case for optimistic concurrency control is very common, in any domain.
- If conflict is not based on optimistic concurrency control, then what are the conditions under which conflict scenarios are detected?