ignite-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrey Aleksandrov (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (IGNITE-8630) Node filter IgnitePredicate executes twice during deploying on one single node cluster
Date Mon, 28 May 2018 15:17:00 GMT

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

Andrey Aleksandrov updated IGNITE-8630:
---------------------------------------
    Summary: Node filter IgnitePredicate executes twice during deploying on one single node
cluster  (was: Node filter IgnitePredicate executes twice during deploing on one single node
cluster)

> 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.6
>
>
> 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