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.