ignite-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexey Goncharuk (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (IGNITE-2396) Dynamic cache changes are not tracked by service processor
Date Mon, 18 Jan 2016 09:24:39 GMT

     [ 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)

Mime
View raw message