protected class SimpleAssignmentStrategy.AnalysisContext extends Object
Modifier and Type | Class and Description |
---|---|
class |
SimpleAssignmentStrategy.AnalysisContext.LoadComparator
LoadComparator is a Comparator that can be used to compare two Member objects based on their partition load (as defined by the LoadCalculator).
|
class |
SimpleAssignmentStrategy.AnalysisContext.NotOwnedFilter
NotOwnedFilter is a Filter implementation used to evaluate Member objects, and selects members who are not represented in the reference ownership object.
|
class |
SimpleAssignmentStrategy.AnalysisContext.SafetyFilter
SafetyFilter is a Filter implementation used to evaluate Member objects, and selects members that are "strong" with respect to the reference ownership, as defined by the backup-strength.
|
class |
SimpleAssignmentStrategy.AnalysisContext.StrengthComparator
StrengthComparator is an Comparator that can be used to compare two Member objects based on their "distance" from a given set of members (as represented by an Ownership object).
|
class |
SimpleAssignmentStrategy.AnalysisContext.UnderloadedFilter
UnderloadedFilter is a Filter implementation that is used to evaluate Member objects, and selects those whose partition load is "underloaded" in comparison to the fair-share load.
|
Modifier and Type | Field and Description |
---|---|
protected Ownership[] |
m_aOwners
The ownership array for this analysis context.
|
protected Member[] |
m_aOwnershipMembers
An array of the ownership members to include in the distribution, arranged in arbitrary order.
|
protected SimpleAssignmentStrategy.LoadCalculator |
m_calculatorBackup
The backup LoadCalculator.
|
protected SimpleAssignmentStrategy.LoadCalculator |
m_calculatorPrimary
The primary LoadCalculator.
|
protected int |
m_cBackupActual
The number of backup storages to maintain.
|
protected long |
m_cDelay
An explicit delay to be used in favor of a determined delay in
calculateAnalysisDelay() . |
protected int |
m_cFairShareBackup
The fair-share backup partition load.
|
protected int |
m_cFairSharePrimary
The fair-share primary partition load.
|
protected long |
m_ldtCompleted
The timestamp of when the analysis represented by this context was completed, or 0 if it is not yet complete.
|
protected Map |
m_mapOwnedPartitions
The map of member ownership information for this analysis context.
|
protected PartitionSet |
m_partsOrphaned
The set of partitions that were determined to be orphaned in the call to
PartitionAssignmentStrategy.analyzeOrphans(Map) . |
protected PartitionSet |
m_partsUpdated
The set of partitions that have been updated in this analysis context; may be null.
|
protected Set |
m_setOwnershipMembers
The set of ownership members to include in the distribution.
|
protected SimpleAssignmentStrategy.BackupStrength |
m_strength
The backup strength for the resiliency of the resulting distribution.
|
Constructor and Description |
---|
AnalysisContext()
Default constructor.
|
Modifier and Type | Method and Description |
---|---|
protected long |
calculateAnalysisDelay()
Calculate whether the analysis should be delayed.
|
protected int |
calculateFairShare(boolean fPrimary)
Return the "fair share" (F) load.
|
protected PartitionSet |
collectEndangered(PartitionSet parts)
Return a partition set representing the subset of the specified partitions that are "endangered".
|
protected PartitionSet |
collectOrphaned(PartitionSet parts)
Return a partition set representing the subset of the specified partitions that are "orphaned".
|
protected PartitionSet |
collectWeak(PartitionSet parts)
Return a partition set representing the subset of the specified partitions that are "weak" or "vulnerable" (as defined by the backup strength).
|
protected void |
copyTransients(SimpleAssignmentStrategy.AnalysisContext ctxLast)
Copy transient values from another, generally the previous, AnalysisContext to this AnalysisContext.
|
protected PartitionSet |
ensureUpdatedPartitions()
Ensure and return the set of updated partitions.
|
protected int |
getActualBackupCount()
Return the number of backups to maintain, given the actual set of ownership-enabled and leaving members.
|
protected long |
getAnalysisDelay()
Return the number of milliseconds the analysis should be delayed;
0L suggests immediate analysis. |
SimpleAssignmentStrategy.LoadCalculator |
getBackupLoadCalculator()
Return the LoadCalculator used to calculate the backup partition load.
|
protected SimpleAssignmentStrategy.BackupStrength |
getBackupStrength()
Return the BackupStrength for this analysis context.
|
long |
getCompletedTime()
Return the time at which the analysis associated with this context was completed, or 0 if it has not been completed.
|
protected int |
getFairShare(boolean fPrimary)
Return the (primary or backup) fair-share partition load.
|
protected int |
getMemberLoad(Member member, boolean fPrimary)
Return the (primary or backup) partition load of the specified member.
|
protected PartitionSet |
getOrphanedPartitions()
Return the partitions deemed orphaned as a result of a previous execution of
analyzeOrphans . |
PartitionSet |
getOwnedPartitions(Member member, int iStore)
Return the set of partitions for which the specified member owns (or has been assigned by this analysis to own) the specified storage index.
|
protected Set |
getOwnershipMembers()
Return the set of members across which to distribute the partition ownership.
|
protected Member[] |
getOwnershipMembersList()
Return an array containing the members across which to distribute the partition ownership, arranged in arbitrary order.
|
protected int |
getPartitionLoad(int iPartition, boolean fPrimary)
Return the load (as defined by the appropriate load calculator) for the specified partition.
|
Ownership |
getPartitionOwnership(int iPartition)
Return the Ownership information (or the ownership assigned by this analysis) for the specified partition.
|
SimpleAssignmentStrategy.LoadCalculator |
getPrimaryLoadCalculator()
Return the LoadCalculator used to calculate the primary partition load.
|
protected PartitionSet |
getUpdatedPartitions()
Return the set of updated partitions; may be null.
|
protected void |
initialize()
Initialize the AnalysisContext.
|
protected SimpleAssignmentStrategy.BackupStrength |
instantiateBackupStrength(Set setOwners)
Create a backup strength to be used for distribution among the specified set of ownership members.
|
Comparator |
instantiateDefaultComparator()
Instantiate a default member Comparator.
|
SimpleAssignmentStrategy.AnalysisContext.LoadComparator |
instantiateLoadComparator(boolean fPrimary)
Return a comparator for primary or backup partition load.
|
Filter |
instantiateNotOwnedFilter(Ownership owners)
Instantiate and return a NotOwnedFilter with the specified ownership.
|
Filter |
instantiateOverloadedFilter(boolean fPrimary)
Instantiate a filter that matches members with an over-load.
|
Filter |
instantiateSafetyFilter(Ownership owners, int iStore)
Instantiate and return a SafetyFilter with the specified ownership.
|
SimpleAssignmentStrategy.AnalysisContext.StrengthComparator |
instantiateStrengthComparator(Ownership owners)
Instantiate a StrengthComparator for the specified reference ownership.
|
Filter |
instantiateUnderloadedFilter(boolean fPrimary)
Instantiate a filter that matches members with an under-load.
|
protected boolean |
isMemberLeaving(Member member)
Return true iff the specified member is in the process of leaving.
|
protected boolean |
isPartitionEndangered(int iPartition)
Return true iff the specified partition is "endangered".
|
protected boolean |
isPartitionEndangered(Ownership owners)
Return true iff the specified ownership is "endangered".
|
protected boolean |
isPartitionStrong(int iPartition)
Return true iff the ownership of the specified partition is "strong", as defined by the current BackupStrength.
|
protected boolean |
isPartitionStrong(Ownership owners)
Return true iff the specified ownership is "strong", as defined by the current BackupStrength.
|
protected boolean |
isStrong(Member member1, Member member2)
Return true iff the specified members are mutually "strong", as defined by the backup strength.
|
protected boolean |
isStrong(Member member, Ownership owners)
Return true iff the specified member is "strong" with respect to the specified ownership, as defined by the backup strength.
|
protected boolean |
isStrongPossible(Set setOwners, Map mapSplit)
Return true iff a "strong" balanced distribution is achievable for the specified set of members, split among a set of categories (e.g. machine, rack, site).
|
protected boolean |
isTransferStrong(int iPartition, int iStore, Member member)
Return true iff the specified partition transfer would result in a "strong" ownership, as defined by the current BackupStrength.
|
protected void |
resetTransients()
Reset those attributes that should be transient between
SimpleAssignmentStrategy.analyzeDistribution() requests. |
protected void |
setAnalysisDelay(long cDelay)
Set the number of milliseconds the analysis should be delayed;
0L suggests immediate analysis. |
protected void |
setBackupStrength(SimpleAssignmentStrategy.BackupStrength strength)
Set the BackupStrength for this analysis context.
|
protected void |
setCompletedTime(long ldt)
Set the timestamp at which the analysis associated with this context completed.
|
protected void |
setOrphanedPartitions(PartitionSet parts)
Set the orphaned partitions that can be prioritized for transfer in order to reduce the transfer cost.
|
protected boolean |
suggestDistribution()
Suggest any distribution that may have been collected by this analysis context to the DistributionManager.
|
protected void |
transitionPartition(int iPartition, int iStore, Member memberFrom, Member memberTo)
Update the analysis context to reflect the suggested transfer of the specified number of primary partitions between the specified members.
|
protected SimpleAssignmentStrategy.LoadCalculator m_calculatorPrimary
protected SimpleAssignmentStrategy.LoadCalculator m_calculatorBackup
protected Map m_mapOwnedPartitions
protected Ownership[] m_aOwners
protected PartitionSet m_partsUpdated
protected PartitionSet m_partsOrphaned
PartitionAssignmentStrategy.analyzeOrphans(Map)
.protected SimpleAssignmentStrategy.BackupStrength m_strength
protected int m_cBackupActual
Note: this may differ from the configured backup count if there is an inadequate number of ownership members to sustain the configured backup count.
protected int m_cFairSharePrimary
protected int m_cFairShareBackup
protected Set m_setOwnershipMembers
Note: this set does not include members that are leaving
protected Member[] m_aOwnershipMembers
Note: this list does not include members that are leaving
protected long m_ldtCompleted
protected long m_cDelay
calculateAnalysisDelay()
.protected PartitionSet getUpdatedPartitions()
protected SimpleAssignmentStrategy.BackupStrength getBackupStrength()
protected void setBackupStrength(SimpleAssignmentStrategy.BackupStrength strength)
strength
- the backup strengthprotected Set getOwnershipMembers()
Note: The set of ownership members does not include any members that may be in the process of leaving
protected Member[] getOwnershipMembersList()
Note: The array does not include any members that may be in the process of leaving
public SimpleAssignmentStrategy.LoadCalculator getPrimaryLoadCalculator()
public SimpleAssignmentStrategy.LoadCalculator getBackupLoadCalculator()
protected int getActualBackupCount()
public long getCompletedTime()
protected void setCompletedTime(long ldt)
ldt
- the completion timestamp, or 0protected PartitionSet getOrphanedPartitions()
analyzeOrphans
.protected void setOrphanedPartitions(PartitionSet parts)
parts
- the set of orphaned partitionsprotected long getAnalysisDelay()
0L
suggests immediate analysis.protected void setAnalysisDelay(long cDelay)
0L
suggests immediate analysis.cDelay
- the number of milliseconds the analysis should be delayedprotected void resetTransients()
SimpleAssignmentStrategy.analyzeDistribution()
requests.protected void initialize()
protected void copyTransients(SimpleAssignmentStrategy.AnalysisContext ctxLast)
ctxLast
- the previous AnalysisContextprotected int getFairShare(boolean fPrimary)
fPrimary
- true iff the primary fair-share should be returnedprotected int calculateFairShare(boolean fPrimary)
fPrimary
- true for the primary fair-share, or false for backupprotected boolean isMemberLeaving(Member member)
member
- the memberprotected SimpleAssignmentStrategy.BackupStrength instantiateBackupStrength(Set setOwners)
setOwners
- the ownership membersprotected boolean isStrongPossible(Set setOwners, Map mapSplit)
setOwners
- the set of ownership membersmapSplit
- the map of members, associated by their categoryprotected boolean isPartitionStrong(int iPartition)
iPartition
- the partitionprotected boolean isPartitionStrong(Ownership owners)
owners
- the ownershipprotected boolean isTransferStrong(int iPartition, int iStore, Member member)
iPartition
- the partition to transferiStore
- the storage index to transfermember
- the member receiving the transferprotected boolean isStrong(Member member1, Member member2)
member1
- the first member to comparemember2
- the second member to compareprotected boolean isStrong(Member member, Ownership owners)
member
- the memberowners
- the ownershipprotected PartitionSet collectOrphaned(PartitionSet parts)
parts
- the partition set to collectprotected PartitionSet collectWeak(PartitionSet parts)
parts
- the partition set to collectprotected boolean isPartitionEndangered(int iPartition)
iPartition
- the partition to test the endangered statusprotected boolean isPartitionEndangered(Ownership owners)
owners
- the ownership to test for endangered statusprotected PartitionSet collectEndangered(PartitionSet parts)
parts
- the partition set to collectprotected PartitionSet ensureUpdatedPartitions()
public PartitionSet getOwnedPartitions(Member member, int iStore)
member
- the memberiStore
- the storage indexpublic Ownership getPartitionOwnership(int iPartition)
iPartition
- the partition to return the ownership forprotected int getPartitionLoad(int iPartition, boolean fPrimary)
iPartition
- the partition to determine the load offPrimary
- true iff the primary load should be returned, or false for backupprotected int getMemberLoad(Member member, boolean fPrimary)
member
- the member to calculate the partition load forfPrimary
- true for primary partition load, else backup loadprotected long calculateAnalysisDelay()
protected void transitionPartition(int iPartition, int iStore, Member memberFrom, Member memberTo)
iPartition
- the partition id to transferiStore
- the storage index to transfermemberFrom
- the member to transfer partitions from, or null if the partition storage-index was endangeredmemberTo
- the member to transfer partitions to, or null if the partition storage index should be endangeredprotected boolean suggestDistribution()
public Filter instantiateNotOwnedFilter(Ownership owners)
owners
- the ownershippublic Filter instantiateSafetyFilter(Ownership owners, int iStore)
owners
- the ownershipiStore
- the storage index at which to evaluate members for safetypublic Filter instantiateOverloadedFilter(boolean fPrimary)
fPrimary
- true for primary partition loadpublic Filter instantiateUnderloadedFilter(boolean fPrimary)
fPrimary
- true for primary partition loadpublic SimpleAssignmentStrategy.AnalysisContext.LoadComparator instantiateLoadComparator(boolean fPrimary)
fPrimary
- true for primary, or false for backuppublic SimpleAssignmentStrategy.AnalysisContext.StrengthComparator instantiateStrengthComparator(Ownership owners)
owners
- the ownership, from which to determine member strengthpublic Comparator instantiateDefaultComparator()
compared
to be equivalent.