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 2018/05/28 14:44:00 UTC
[jira] [Created] (IGNITE-8629) There is no documentation about what
on which node Ignite Predicate will be executed during service/cache
deploying with NodeFilter
Andrey Aleksandrov created IGNITE-8629:
------------------------------------------
Summary: There is no documentation about what on which node Ignite Predicate will be executed during service/cache deploying with NodeFilter
Key: IGNITE-8629
URL: https://issues.apache.org/jira/browse/IGNITE-8629
Project: Ignite
Issue Type: Task
Components: documentation
Affects Versions: 2.4
Reporter: Andrey Aleksandrov
Fix For: 2.6
In documentation we could see that:
[https://apacheignite.readme.io/docs/service-grid#section-node-filter-based-deployment]
This approach is based on a filtering predicate that gets called on every node at the time Ignite Service engine determines a set of possible candidates for the Ignite Service deployment.
Looks like it's not correct because in Ignite 2.4 next code:
{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.
ignite2.services().deploy(new ServiceConfiguration()
.setMaxPerNodeCount(1)
.setNodeFilter(new IgnitePredicate<ClusterNode>() {
@IgniteInstanceResource 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;
}
})
.setName("my-service")
.setService(new SimpleMapServiceImpl<>())
);
{code}
Will be executed only on "ignite-1"
{code:java}
Is local node: true
ignite: ignite-1
Is local node: false
ignite: ignite-1
Service was initialized: my-service
Is local node: true
ignite: ignite-1
Is local node: false
ignite: ignite-1
Service was initialized: my-service
Executing distributed service: my-service
Executing distributed service: my-service
Is local node: true
ignite: ignite-1
Is local node: false
ignite: ignite-1
{code}
Looks like ignite-1 is the coordinator node in this case. But this behavior is different from described in the documentation.
Also, this should be described in case of the cache deployment:
{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.
ignite2.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}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)