public class GUIDHelper extends Object
A persistence GUID must at minimum reflect the partition-id and a monotonically increasing partition-version that could be used to determine, given a set of GUIDs representing the same partition, a total ordering of the GUIDs over time.
| Modifier and Type | Class and Description | 
|---|---|
static class  | 
GUIDHelper.GUIDResolver
Resolver used during a recovery to discover the newest available GUID
 for a given partition. 
 | 
| Constructor and Description | 
|---|
GUIDHelper()  | 
| Modifier and Type | Method and Description | 
|---|---|
static Map<Integer,String[]> | 
assignStores(Map<Integer,Object[]> mapConstraints,
            int cDistinctStores)
Return a Map containing assignments of member id to stores based on the
 given constraints. 
 | 
protected static <K> Map.Entry<K,Object[]>[] | 
createSortedEntries(Map<K,Object[]> map)
Return an array of  
entries based on the provided map
 ensuring the value (Object[]) is sorted. | 
protected static void | 
evaluateGUID(String sGUID,
            String[] asGUIDNewest,
            Set<String> setPrevGUIDs,
            int cPartitions)
Evaluate the provided GUID ensuring  
asGUIDNewest references the
 latest and setPrevGUIDs references previous GUIDs. | 
static String | 
generateGUID(int nPartition,
            long lVersion,
            long ldt,
            Member member)
Generate and return a new GUID for the specified partition. 
 | 
static int | 
getMemberId(String sGUID)
Parse the specified GUID and return the originating member-id. 
 | 
static int | 
getPartition(String sGUID)
Parse the specified GUID and return the partition-id. 
 | 
static PartitionSet | 
getPartitions(Map<Integer,Object[]> mapStores,
             int cParts)
Return a  
PartitionSet with all partitions present in the provided
 mapStores. | 
static long | 
getServiceJoinTime(String sGUID)
Parse the specified GUID and return the service join time. 
 | 
static long | 
getVersion(String sGUID)
Parse the specified GUID and return the partition-version. 
 | 
protected static List<String> | 
intersects(Object[] aoLHS,
          Object[] aoRHS)
Return a List of stores (GUIDs) that allows the caller to derive whether
 the provided sets are disjoint, intersect or equal. 
 | 
static void | 
main(String[] asArg)
Utility that outputs information about a given GUID. 
 | 
protected static String | 
parseAttribute(String sGUID,
              int id)
Return the specified (0-based) attribute from the GUID. 
 | 
static String[] | 
resolveNewest(Collection<String> colGUID,
             int cPartitions)
Deprecated. 
 
Replaced by  
resolveNewest(Map, Set, int). | 
protected static String[] | 
resolveNewest(Map<Member,String[]> mapGUID,
             Set<String> setPrevGUIDs,
             int cPartitions)
Return an array of the newest GUID for each partition, indexed by the
 partition-id and collect previous GUIDs into the provided set. 
 | 
static boolean | 
validateGUID(String sGUID)
Validate the given GUID. 
 | 
public static String generateGUID(int nPartition, long lVersion, long ldt, Member member)
nPartition - the partition to return a GUID forlVersion - the creation version of the partitionldt - the creation timestamp; informational onlymember - the member generating the GUID; informational onlypublic static boolean validateGUID(String sGUID)
sGUID - the GUID to validatepublic static int getPartition(String sGUID)
sGUID - the GUID to return the partition-id forpublic static long getVersion(String sGUID)
sGUID - the GUID to return the partition-version forpublic static long getServiceJoinTime(String sGUID)
sGUID - the GUID used to return the service join timepublic static int getMemberId(String sGUID)
sGUID - the GUID to return the originating member-id for@Deprecated public static String[] resolveNewest(Collection<String> colGUID, int cPartitions)
resolveNewest(Map, Set, int).colGUID - the collection of GUIDs to resolvecPartitions - the partition-countprotected static String[] resolveNewest(Map<Member,String[]> mapGUID, Set<String> setPrevGUIDs, int cPartitions)
mapGUID - the map of GUIDs to resolvesetPrevGUIDs - the set that holds old GUIDscPartitions - the partition-countprotected static void evaluateGUID(String sGUID, String[] asGUIDNewest, Set<String> setPrevGUIDs, int cPartitions)
asGUIDNewest references the
 latest and setPrevGUIDs references previous GUIDs.sGUID - the GUID to be evaluatedasGUIDNewest - the array that contains the newest GUIDssetPrevGUIDs - the set that contains the old GUIDscPartitions - the partition-countpublic static Map<Integer,String[]> assignStores(Map<Integer,Object[]> mapConstraints, int cDistinctStores)
The algorithm will attempt to fairly distribute assignment of stores across members while abiding to the given constraints. For example:
| Member Id | Constraints | Assignments | 
|---|---|---|
| 1 | {a,b,c,d} | {a,c} | 
| 2 | {a,b,c,d} | {b,d} | 
| 3 | {e,f,g,h} | {e,g} | 
| 4 | {e,f,g,h} | {f,h} | 
mapConstraints - the constraints to perform assignments withincDistinctStores - the number of expected distinct storespublic static PartitionSet getPartitions(Map<Integer,Object[]> mapStores, int cParts)
PartitionSet with all partitions present in the provided
 mapStores.mapStores - a Map of member id to storescParts - the partition countprotected static String parseAttribute(String sGUID, int id)
sGUID - the GUIDid - the (0-based) attribute indexprotected static List<String> intersects(Object[] aoLHS, Object[] aoRHS)
| Result | Reason | 
|---|---|
| null | disjoint sets | 
| listReturn | shared elements across LHS and RHS | 
| listReturn.size() == aoLHS.length == aoRHS.length | LHS and RHS are equal | 
aoLHS - the first set in the comparisonaoRHS - the second set in the comparisonprotected static <K> Map.Entry<K,Object[]>[] createSortedEntries(Map<K,Object[]> map)
entries based on the provided map
 ensuring the value (Object[]) is sorted.K - - the key typemap - a map to base the Entry[] onentries ensuring the value (Object[]) is sortedpublic static void main(String[] asArg)
asArg - command line arguments