You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Alexey Goncharuk (JIRA)" <ji...@apache.org> on 2016/01/18 10:24:39 UTC

[jira] [Updated] (IGNITE-2396) Dynamic cache changes are not tracked by service processor

     [ https://issues.apache.org/jira/browse/IGNITE-2396?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alexey Goncharuk updated IGNITE-2396:
-------------------------------------
    Description: 
Currently service processor handles only discovery node join/leave/fail events. Now consider the following two scenarios:
---------------------
 - N nodes are started. Topology version is (N, 0)
 - A dynamic cache is created. Topology version is (N, 1)
 - An affinity singleton service is deployed. 

On step (3), when assignment is calculated, service processor uses topology version (N, 0) (see org.apache.ignite.internal.processors.service.GridServiceProcessor.DeploymentListener#onDeployment). As a result, no affinity nodes are returned for assignment and service is not deployed.

---------------------
 - N nodes are started. Topology version is (N, 0)
 - An affinity singleton service is deployed. 
 - A dynamic cache is created. Topology version is (N, 1)

On step (3) custom discovery event is generated, but it is not handled by service processor, so no reassignment logic is triggered and service is not deployed.

Proposed solution is as follows:
 - Use a correct topology version for service deployment (ctx.discovery().topologyVersionEx()).
 - Event listener should handle custom events that trigger dynamic cache start and stop.
 - Additionally need to investigate whether reassignment logic should be in any way synchronized with the partition exchange future completion. 

org.apache.ignite.internal.processors.service.IgniteServiceDynamicCachesSelfTest is added to master. Need to add it to the services test suite once the fix is implemented.

> Dynamic cache changes are not tracked by service processor
> ----------------------------------------------------------
>
>                 Key: IGNITE-2396
>                 URL: https://issues.apache.org/jira/browse/IGNITE-2396
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Alexey Goncharuk
>
> Currently service processor handles only discovery node join/leave/fail events. Now consider the following two scenarios:
> ---------------------
>  - N nodes are started. Topology version is (N, 0)
>  - A dynamic cache is created. Topology version is (N, 1)
>  - An affinity singleton service is deployed. 
> On step (3), when assignment is calculated, service processor uses topology version (N, 0) (see org.apache.ignite.internal.processors.service.GridServiceProcessor.DeploymentListener#onDeployment). As a result, no affinity nodes are returned for assignment and service is not deployed.
> ---------------------
>  - N nodes are started. Topology version is (N, 0)
>  - An affinity singleton service is deployed. 
>  - A dynamic cache is created. Topology version is (N, 1)
> On step (3) custom discovery event is generated, but it is not handled by service processor, so no reassignment logic is triggered and service is not deployed.
> Proposed solution is as follows:
>  - Use a correct topology version for service deployment (ctx.discovery().topologyVersionEx()).
>  - Event listener should handle custom events that trigger dynamic cache start and stop.
>  - Additionally need to investigate whether reassignment logic should be in any way synchronized with the partition exchange future completion. 
> org.apache.ignite.internal.processors.service.IgniteServiceDynamicCachesSelfTest is added to master. Need to add it to the services test suite once the fix is implemented.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)