Dave,

In case it's executed even if primary node is outside of the cluster group,
then I think it's a bug - I would throw an exception in this case. However,
is there any particular reason you're doing this? Is there a use case? I
don't see much sense in combining affinityRun with a cluster group.

Backup no node is never used by affinityRun to my knowledge.

-Val

On Fri, Aug 31, 2018 at 7:07 AM David Harvey <syssoft...@gmail.com> wrote:

> This function takes:
>
>         int partId,
>
>         ...
>
>         @Nullable Collection<ClusterNode> nodes,
>
>
> It uses partId to find the node with the primary partition, and proceeds
> even if that node is not in the subgrid that was passed in.  This is either
> a bug, or the semantics should be specified more clearly.
>
>
> There are two sub-cases.
>
>
>    - one of nodes in the sub-grid is a backup for the partition
>    - the partition does not exist on any of the nodes in the sub-grid
>
> This case can be  exposed via IgnuteCompute.affinityRun... when the
> IgniteCompute was created with a subgrid that did not include the primary
> node.
>
> I got lost tracing the code below this, and could not tell if this would
> throw an exception or execute on the primary node.   The later would seem
> to just be a bug.  It would be simple to change this code to choose a node
> in the subgrid or throw and exception.
>
> If it selected a backup node, then would the this part of the IgniteCompute
> contract still hold w/o other changes: "The data of the partition where
> affKey is stored will not be migrated from the target node while the job is
> executed."  ?
>
> In any case, the IgniteCompute semantics around this case should be stated.
>
>
> -DH
>

Reply via email to