Ticket #206 (closed enhancement: fixed)
Opened 9 years ago
Explicitly distributing arrays within a replicated graph
| Reported by: | Bernhard Haumacher (haui at haumacher dot de) | Owned by: | |
|---|---|---|---|
| Priority: | normal | Milestone: | 2.0 |
| Component: | uka.karo | Version: | |
| Severity: | normal | Keywords: | |
| Cc: |
Description
If partial replication (see ticket:171) requires to declare the class of an explicitly distributed object to implement a special interface (as described in ticket:205), there is no way to explicitly distribute array objects. Therefore, there should be another way to specify the distribution of an object without requiring its class to be modified. This could be achieved with a distribution API within the replicated object class. After creating an arbitrary object, the application could call distributeTo(Object obj, int[] ranks) to restrict the distribution of obj to the ranks of the replicated object specified by ranks.
Solution
The specified and actual distribution of objects within a replicated graph are stored explicitly. The distribution is part of the state of a replicated object, and the view to it is kept consistent on all nodes, where a copy of the corresponding object is allocated. To send incremental updates to the distribution, there is also a backup copy of the distribution that can be used to find local modifications by comparing it with the current distribution. This backup copy (that represents the distribution at the start of an update) is also used for deciding about the receivers for a certain patch, see ticket:183.
Test
jp.test.TestReplicaDistribution
See also
implemented since 1.08b.
