Class PlatformDotNetAffinityFunction
- java.lang.Object
-
- org.apache.ignite.platform.dotnet.PlatformDotNetAffinityFunction
-
- All Implemented Interfaces:
Externalizable
,Serializable
,AffinityFunction
,LifecycleAware
public class PlatformDotNetAffinityFunction extends Object implements AffinityFunction, Externalizable, LifecycleAware
AffinityFunction implementation which can be used to configure .NET affinity function in Java Spring configuration.- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description PlatformDotNetAffinityFunction()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description List<List<ClusterNode>>
assignPartitions(AffinityFunctionContext affCtx)
Gets affinity nodes for a partition.org.apache.ignite.internal.processors.platform.cache.affinity.PlatformAffinityFunction
getFunc()
Gets the inner func.Map<String,?>
getProperties()
Get properties.String
getTypeName()
Gets .NET type name.void
init(org.apache.ignite.internal.processors.platform.cache.affinity.PlatformAffinityFunction func)
Initializes this instance.int
partition(Object key)
Gets partition number for a given key starting from0
.int
partitions()
Gets total number of partitions available.void
readExternal(ObjectInput in)
void
removeNode(UUID nodeId)
Removes node from affinity.void
reset()
Resets cache affinity to its initial state.PlatformDotNetAffinityFunction
setProperties(Map<String,?> props)
Set properties.PlatformDotNetAffinityFunction
setTypeName(String typName)
Sets .NET type name.void
start()
Starts grid component, called on grid start.void
stop()
Stops grid component, called on grid shutdown.void
writeExternal(ObjectOutput out)
-
-
-
Method Detail
-
getTypeName
public String getTypeName()
Gets .NET type name.- Returns:
- .NET type name.
-
setTypeName
public PlatformDotNetAffinityFunction setTypeName(String typName)
Sets .NET type name.- Parameters:
typName
- .NET type name.- Returns:
this
for chaining.
-
setProperties
public PlatformDotNetAffinityFunction setProperties(Map<String,?> props)
Set properties.- Parameters:
props
- Properties.- Returns:
this
for chaining.
-
reset
public void reset()
Resets cache affinity to its initial state. This method will be called by the system any time the affinity has been sent to remote node where it has to be reinitialized. If your implementation of affinity function has no initialization logic, leave this method empty.- Specified by:
reset
in interfaceAffinityFunction
-
partitions
public int partitions()
Gets total number of partitions available. All caches should always provide correct partition count which should be the same on all participating nodes. Note that partitions should always be numbered from0
inclusively toN
exclusively without any gaps.- Specified by:
partitions
in interfaceAffinityFunction
- Returns:
- Total partition count.
-
partition
public int partition(Object key)
Gets partition number for a given key starting from0
. Partitioned caches should make sure that keys are about evenly distributed across all partitions from0
topartition count
for best performance.Note that for fully replicated caches it is possible to segment key sets among different grid node groups. In that case each node group should return a unique partition number. However, unlike partitioned cache, mappings of keys to nodes in replicated caches are constant and a node cannot migrate from one partition to another.
- Specified by:
partition
in interfaceAffinityFunction
- Parameters:
key
- Key to get partition for.- Returns:
- Partition number for a given key.
-
assignPartitions
public List<List<ClusterNode>> assignPartitions(AffinityFunctionContext affCtx)
Gets affinity nodes for a partition. In case of replicated cache, all returned nodes are updated in the same manner. In case of partitioned cache, the returned list should contain only the primary and back up nodes with primary node being always first.Note that partitioned affinity must obey the following contract: given that node
N
is primary for some keyK
, if any other node(s) leave grid and no node joins grid, nodeN
will remain primary for keyK
.- Specified by:
assignPartitions
in interfaceAffinityFunction
- Parameters:
affCtx
- Affinity function context. Will provide all required information to calculate new partition assignments.- Returns:
- Unmodifiable list indexed by partition number. Each element of array is a collection in which first node is a primary node and other nodes are backup nodes.
-
removeNode
public void removeNode(UUID nodeId)
Removes node from affinity. This method is called when it is safe to remove left node from affinity mapping.- Specified by:
removeNode
in interfaceAffinityFunction
- Parameters:
nodeId
- ID of node to remove.
-
writeExternal
public void writeExternal(ObjectOutput out) throws IOException
- Specified by:
writeExternal
in interfaceExternalizable
- Throws:
IOException
-
readExternal
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
- Specified by:
readExternal
in interfaceExternalizable
- Throws:
IOException
ClassNotFoundException
-
init
public void init(org.apache.ignite.internal.processors.platform.cache.affinity.PlatformAffinityFunction func)
Initializes this instance.- Parameters:
func
- Underlying func.
-
start
public void start() throws IgniteException
Starts grid component, called on grid start.- Specified by:
start
in interfaceLifecycleAware
- Throws:
IgniteException
- If failed.
-
stop
public void stop() throws IgniteException
Stops grid component, called on grid shutdown.- Specified by:
stop
in interfaceLifecycleAware
- Throws:
IgniteException
- If failed.
-
getFunc
public org.apache.ignite.internal.processors.platform.cache.affinity.PlatformAffinityFunction getFunc()
Gets the inner func.- Returns:
- The inner func.
-
-