kernel.core.conflict-resolution
Utilities for assisting in conflict resolution.
combined-effect
(combined-effect MCGS CDAG HB CC base-FM GC own-site-ID)
Based on the result the MOVIC algorithm returned, checks whether one CG was produced, in that case applying and returning the correct feature model. Otherwise, returns a conflict descriptor.
conflict-aware?
(conflict-aware? GC site-ID HB CC)
Determines whether another site is aware of a conflict, i.e., is in conflict resolution mode. Only called when the local site is already in conflict resolution. This is a sufficient, but not necessary condition for synchronizing all sites, i.e., every site will eventually be conflict-aware according to this function, but may also be conflict-aware already when this function does not say so (because the local site need not already have seen the same conflicts as the checked site).
conflict-descriptor
(conflict-descriptor MCGS CDAG HB CC GC own-site-ID)
A conflict descriptor contains information about a conflict situation. It consists of a map of versions, where a CG’s string hash is mapped to a sequence of topologically ordered operations. Further, a neutral CG is included under they key :neutral. The :conflicts key then maps from CG hashes to maps, which in turn map from operations to another map, which maps from operations to conflicts. The :metadata key maps from operation IDs to metadata, e.g., human-readable descriptions. The :synchronized key maps to a boolean which indicates whether all sites are synchronized yet.
involved-site-IDs
(involved-site-IDs MCGS HB combined-effect)
Returns all sites which are involved in any conflict. This is useful for only allowing those sites to participate in the voting phase.
resolved-MCG
(resolved-MCG MCGS MCG-ID)
For an agreed resolved version, extracts the according MCG from an MCGS.
synchronized?
(synchronized? GC HB CC own-site-ID)
Determines whether all sites are aware of a conflict, i.e., are in conflict resolution mode. Until synchronization, no resolution and voting is allowed. When all sites are conflict-aware (i.e., frozen), no more operations can be in flight - because if there were some, they would have been generated in a frozen state, which is not allowed.
voting?
(voting? MCGS combined-effect)
Determines whether the system is in the voting phase. This is the case when a conflict has been detected (i.e., at least two versions have been created) and the synchronization phase is done.