You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Andrey Aleksandrov (JIRA)" <ji...@apache.org> on 2019/01/17 11:56:00 UTC
[jira] [Closed] (IGNITE-8630) Node filter IgnitePredicate executes
twice during deploying on one single node cluster
[ https://issues.apache.org/jira/browse/IGNITE-8630?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andrey Aleksandrov closed IGNITE-8630.
--------------------------------------
Thank you for confirmation!
> Node filter IgnitePredicate executes twice during deploying on one single node cluster
> --------------------------------------------------------------------------------------
>
> Key: IGNITE-8630
> URL: https://issues.apache.org/jira/browse/IGNITE-8630
> Project: Ignite
> Issue Type: Bug
> Components: managed services
> Affects Versions: 2.4
> Reporter: Andrey Aleksandrov
> Assignee: Vyacheslav Daradur
> Priority: Major
> Fix For: 2.8
>
>
> Next code:
> {code:java}
> Ignite ignite = IgnitionEx.start("examples/config/example-ignite.xml", "ignite-1");
> // Deploy services only on server nodes.
> ignite.services().deploy(new ServiceConfiguration()
> .setMaxPerNodeCount(1)
> .setNodeFilter(new IgnitePredicate<ClusterNode>() {
> Ignite filterIgnite;
> @Override public boolean apply(ClusterNode node) {
> System.out.println("Is local node: " + node.isLocal());
> System.out.println("ignite: " + (isNull(filterIgnite) ? null : filterIgnite.name()));
> return true;
> }
> @IgniteInstanceResource
> void setFilterIgnite(Ignite filterIgnite) {
> this.filterIgnite = filterIgnite;
> }
> })
> .setName("my-service")
> .setService(new SimpleMapServiceImpl<>())
> );
> {code}
> Produces next output:
> {code:java}
> Is local node: true
> ignite: ignite-1
> Service was initialized: my-service
> Executing distributed service: my-service
> Is local node: true
> ignite: ignite-1{code}
> In case if we will increase the cluster size to 2 then we will have:
> {code:java}
> Ignite ignite = IgnitionEx.start("examples/config/example-ignite.xml", "ignite-1");
> Ignite ignite2 = IgnitionEx.start("examples/config/example-ignite.xml", "ignite-2");
> // Deploy services only on server nodes.
> ignite.services().deploy(new ServiceConfiguration()
> .setMaxPerNodeCount(1)
> .setNodeFilter(new IgnitePredicate<ClusterNode>() {
> Ignite filterIgnite;
> @Override public boolean apply(ClusterNode node) {
> System.out.println("Is local node: " + node.isLocal());
> System.out.println("ignite: " + (isNull(filterIgnite) ? null : filterIgnite.name()));
> return true;
> }
> @IgniteInstanceResource
> void setFilterIgnite(Ignite filterIgnite) {
> this.filterIgnite = filterIgnite;
> }
> })
> .setName("my-service")
> .setService(new SimpleMapServiceImpl<>())
> );
> {code}
> We will get:
> {code:java}
> Is local node: true
> ignite: ignite-1
> Is local node: false
> ignite: ignite-1
> Service was initialized: my-service
> Executing distributed service: my-service
> Service was initialized: my-service
> Is local node: true
> ignite: ignite-1
> Is local node: false
> ignite: ignite-1
> Executing distributed service: my-service
> Is local node: true
> ignite: ignite-1
> Is local node: false
> ignite: ignite-1
> {code}
> So we have additional execution:
> {code:java}
> Is local node: true
> ignite: ignite-1
> Is local node: false
> ignite: ignite-1{code}
> So Ignite executes apply method several times (2 times for 1 server, 6 times for 2 servers). This behavior should be documented or fixed because at the moment it's could be unexpected for the user.
> You can see the same behaviour during deploying of the caches with nodeFilterÂ
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)