ignite-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vladimir Ozerov (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (IGNITE-8630) Node filter IgnitePredicate executes twice during deploying on one single node cluster
Date Fri, 28 Sep 2018 05:51:00 GMT

    [ https://issues.apache.org/jira/browse/IGNITE-8630?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16631381#comment-16631381
] 

Vladimir Ozerov commented on IGNITE-8630:
-----------------------------------------

Moved to AI 2.8 due to inactivity, please feel free to return ticket back to 2.7 if it is
ready by 30 Sep 2018 (AI 2.7 code freeze date).

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

Mime
View raw message