org.apache.ignite.ml.dataset.impl.cache.util

## Class DatasetAffinityFunctionWrapper

- java.lang.Object
- - org.apache.ignite.ml.dataset.impl.cache.util.DatasetAffinityFunctionWrapper

- All Implemented Interfaces:
    Serializable, AffinityFunction

      public class DatasetAffinityFunctionWrapper
      extends Object
      implements AffinityFunction

  Affinity function wrapper that uses key as a partition index and delegates all other functions to specified delegate.
  See Also:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `DatasetAffinityFunctionWrapper(AffinityFunction delegate)` Constructs a new instance of affinity function wrapper.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `List<List<ClusterNode>>` | `assignPartitions(AffinityFunctionContext affCtx)` Gets affinity nodes for a partition.
    `int` | `partition(Object key)` Returns key as a partition index.
    `int` | `partitions()` Gets total number of partitions available.
    `void` | `removeNode(UUID nodeId)` Removes node from affinity.
    `void` | `reset()` Resets cache affinity to its initial state.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### DatasetAffinityFunctionWrapper

          public DatasetAffinityFunctionWrapper(AffinityFunction delegate)

      Constructs a new instance of affinity function wrapper.
      Parameters:
        `delegate` - Affinity function which actually performs all methods except `partition()`.

  - ### Method Detail

    - #### 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 interface `AffinityFunction`

    - #### 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 from `0` inclusively to `N` exclusively without any gaps.
      Specified by:
        `partitions` in interface `AffinityFunction`
      Returns:
        Total partition count.

    - #### partition

          public int partition(Object key)

      Returns key as a partition index.
      Specified by:
        `partition` in interface `AffinityFunction`
      Parameters:
        `key` - Partition index.
      Returns:
        Partition index.

    - #### 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 key `K`, if any other node(s) leave grid and no node joins grid, node `N` will remain primary for key `K`.

      Specified by:
        `assignPartitions` in interface `AffinityFunction`
      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 interface `AffinityFunction`
      Parameters:
        `nodeId` - ID of node to remove.

2022 Copyright © Apache Software Foundation
| Follow @ApacheIgnite
Ignite Database and Caching Platform | : ver. 2.12.0
Release Date | : January 10 2022