The runtime prevents race conditions by communicating an activation request to each other cluster with which a requesting cluster can communicate indicating the requesting cluster's intent to activate a component. When another cluster determines that the requesting cluster is in a race condition with the other cluster, the other cluster uses a tiebreaking mechanism to determine which activation request is to succeed.
The runtime removes any duplicate component by exchanging sets of possible duplicates to each other cluster with which the cluster can communicate, and using a tiebreaking mechanism to determine which duplicated component is to survive for any duplicate that existed and which duplicate or duplicates will be killed. The runtime may be configured to change the state data to indicate sole ownership by a cluster when no clusters are partitioned from one another.
One or more aspects are directed towards attempting, in an attempting cluster, to determine if a component is already activated in any other cluster with which the attempting cluster can communicate, and if so, using the already-activated component. If not already activated, a determination is made as to whether a partition exists between at least two clusters. If a partition exists, the component is activated and associated with state data indicating that the activated component is a possible duplicate.
One or more aspects are directed towards determining that at least one previously partitioned cluster is no longer partitioned, and exchanging sets of possible duplicates with at least one other cluster. If a duplicate component exists, one component is selected to survive. The state data may be changed from indicating a possible duplicate to indicating sole ownership by a cluster when no clusters are partitioned from one another.