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