You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ignite.apache.org by Surinder Mehra <re...@gmail.com> on 2021/10/27 12:18:17 UTC

Submitting compute jobs from client node

Hi,
I have a sever node and a thick client node running. I am trying to submit
ignite compute job from client node to server node but it doesn't work.

ClusterGroup grp = ignite.cluster().forServers()
IgniteCompute ignieCompute = ignite.compute(grp);
igniteCompute.run(() ->  System.out.println("Task Executed"));

Sysout never printed on console and client keeps running. If I change it to
server mode, tasks completed immediately.

Can someone help me understand if I am missing some configuration?

Re: Submitting compute jobs from client node

Posted by Surinder Mehra <re...@gmail.com>.
Hi,
I have one more query. In my usecase, i submit thousands of similar compute
tasks as ignite callable from ignite client to server nodes. And i have
deployed app libs on ignite nodes to avoid peer class loading network cost.
As per my understanding, as soon as ignute client submit task to grid, it
will deserialize the task class along with its fields and execute it. This
happems on each task submitted.

My question is, is there a way I can avoid this deserialization overhead
for same task submited again with different field values.
Some what like holding same DemoTask instance but calling its call method
several times with different parameters

DemoTask implements IgniteCallable<POJO>{

List<String> trades;
String clientName;
LocalDate asof;
.....constr..... get set......

.....call() ....override
}


On Sat, Oct 30, 2021, 14:44 Surinder Mehra <re...@gmail.com> wrote:

> Hi,
> I found the list. So required list is:
> annotations.jar
> kotlin-reflect.jar
> kotlin-stdlib.jar
> kotlin-stdlib-common.jar
> kotlin-stdlib-jdk8.jar
>
> For  something very basic, only thing I only needed was
> kotlin-stdlib.jar(1.5.31) to run my program. I guess others are needed as
> required. Thanks for help.
>
>
> On Sat, Oct 30, 2021 at 1:04 PM Surinder Mehra <re...@gmail.com> wrote:
>
>> I have mixed  setup, where java client trying to run kotlin function on
>> ignite server. Also  i dont run server and client in intelliJ. If I run
>> both client and server in IntelliJ, it works. So I am trying to find out
>> what list of jars IntelliJ is providing which are missing in standalone
>> ignite node libs.
>> here are my steps.
>> 1. compile and create jar file using gradle
>> 2. copy jar file and kotlin stdlib-jdk8 file to local ignite/libs
>> directory
>> 3. start server node
>> 4. start client node
>>  5. Client and server both running ignite 2.11.0 and jdk : openjdk
>> 11.0.12+7-LTS, OS : Linux 4.14.248-189.247.amzn2.x86_64 amd62
>> MockTest.kt
>>
>> fun abc(x: Int): () -> Int ={
>> println("Kotlin prints : " + (x*2))
>> x*2
>> }
>>
>> Java main file:
>> Test{
>> psvm(){
>>
>> IgniteConfiguration igniteConfiguration = new IgniteConfiguration()
>>                 .setClientMode(true)
>>                 .setPeerClassLoadingEnabled(true);
>>
>> Ignite ignite = Ignition.start(igniteConfiguration)
>>
>>     ignite.compute().run(() ->  abc(1).invoke());
>> }
>>
>> Server node is simple ignite node with peer class loading enabled
>>
>> Exception : NoClassDefinitionFoundError kotlin/jvm/functions/Function0
>>
>> On Fri, Oct 29, 2021 at 8:09 PM Stephen Darlington <
>> stephen.darlington@gridgain.com> wrote:
>>
>>> As long as it can peer-class-load the necessary classes (or they’re
>>> already deployed on the server side) it should work. This works on my
>>> machine:
>>>
>>> val cfg = IgniteConfiguration()
>>>         .setClientMode(true)
>>>         .setPeerClassLoadingEnabled(true)
>>> Ignition.start(cfg)
>>>         .use { ignite ->
>>>             ignite.compute().run() { println("Hello") }
>>>         }
>>>
>>>
>>> On 29 Oct 2021, at 13:20, Surinder Mehra <re...@gmail.com> wrote:
>>>
>>> Hi Thanks much for investigating it with me.  After spending lot of
>>> time on it, I found that client and servers were running on different JDK
>>> versions. Client running in java 11 was submitting tasks to server node
>>> running on java 8. I upgraded java version on server node and it worked.
>>>
>>> Actually I have another question. Does ignite needs any extra
>>> dependencies to run tasks written in Kotlin. I am getting below error when
>>> try to run kotlin code as part of task
>>>
>>> Caused by: java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
>>> at com.test.TestTask.<clinit>(TestTask.kt:36)
>>> Caused by: java.lang.ClassNotFoundException:
>>> kotlin.jvm.internal.Intrinsics
>>> at
>>> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
>>> at
>>> java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
>>> at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
>>> ... 45 more
>>>
>>> On Wed, Oct 27, 2021 at 9:57 PM Stephen Darlington <
>>> stephen.darlington@gridgain.com> wrote:
>>>
>>>> Using Ignite 2.11 and the following code works.
>>>>
>>>> Server:
>>>>
>>>> public class ComputeServer {
>>>>     public static void main(String[] args) {
>>>>         IgniteConfiguration igniteConfiguration = new IgniteConfiguration()
>>>>                 .setPeerClassLoadingEnabled(true);
>>>>         Ignite ignite = Ignition.start(igniteConfiguration);
>>>>     }
>>>> }
>>>>
>>>> Client:
>>>>
>>>> public class ComputeClient {
>>>>     public static void main(String[] args) {
>>>>         IgniteConfiguration igniteConfiguration = new IgniteConfiguration()
>>>>                 .setClientMode(true)
>>>>                 .setPeerClassLoadingEnabled(true);
>>>>         try (Ignite ignite = Ignition.start(igniteConfiguration)) {
>>>>             ignite.compute().run(() -> System.out.println("Hello, world"));
>>>>         }
>>>>
>>>>     }
>>>> }
>>>>
>>>> (It executes on server nodes by default; you don’t need to create a
>>>> cluster group for that.)
>>>>
>>>> So I think you’ll need to share more about your configuration and/or
>>>> code to get to the bottom of this.
>>>>
>>>> On 27 Oct 2021, at 16:47, Surinder Mehra <re...@gmail.com> wrote:
>>>>
>>>> Just wondering if it is possible at all. All examples/demos I have seen
>>>> are either using a thin client  or one server node submitting a task to the
>>>> grid, or with affinity to a particular node. I have tried all compute apis,
>>>> like run, call, runAffinity. callaffinity, broadcast. none of them works
>>>> when submitted from client node. They do run if I change clusterGroup to
>>>> local nodes. like ClusterGroup grp = ignite.cluster().forLocalNodes();
>>>>
>>>> On Wed, Oct 27, 2021 at 6:20 PM Surinder Mehra <re...@gmail.com>
>>>> wrote:
>>>>
>>>>> yes, it is enabled. Even if that wasn't enabled, I should get class
>>>>> not found error. Here i dont get any error but its simply doesn't execute.
>>>>> I see below flag needs to be enabled for thin client. Is there any
>>>>> setting for thick clients as well ?
>>>>>
>>>>> https://ignite.apache.org/docs/latest/thin-clients/java-thin-client
>>>>>
>>>>> <bean class="org.apache.ignite.configuration.IgniteConfiguration" id="ignite.cfg">
>>>>>     <property name="clientConnectorConfiguration">
>>>>>         <bean class="org.apache.ignite.configuration.ClientConnectorConfiguration">
>>>>>             <property name="thinClientConfiguration">
>>>>>                 <bean class="org.apache.ignite.configuration.ThinClientConfiguration">
>>>>>                     <property name="maxActiveComputeTasksPerConnection" value="100" />
>>>>>                 </bean>
>>>>>             </property>
>>>>>         </bean>
>>>>>     </property></bean>
>>>>>
>>>>>
>>>>> On Wed, Oct 27, 2021 at 6:04 PM Stephen Darlington <
>>>>> stephen.darlington@gridgain.com> wrote:
>>>>>
>>>>>> Did you enable peer class loading?
>>>>>>
>>>>>> > On 27 Oct 2021, at 13:18, Surinder Mehra <re...@gmail.com>
>>>>>> wrote:
>>>>>> >
>>>>>> > Hi,
>>>>>> > I have a sever node and a thick client node running. I am trying to
>>>>>> submit ignite compute job from client node to server node but it doesn't
>>>>>> work.
>>>>>> >
>>>>>> > ClusterGroup grp = ignite.cluster().forServers()
>>>>>> > IgniteCompute ignieCompute = ignite.compute(grp);
>>>>>> > igniteCompute.run(() ->  System.out.println("Task Executed"));
>>>>>> >
>>>>>> > Sysout never printed on console and client keeps running. If I
>>>>>> change it to server mode, tasks completed immediately.
>>>>>> >
>>>>>> > Can someone help me understand if I am missing some configuration?
>>>>>> >
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>>
>>>

Re: Submitting compute jobs from client node

Posted by Surinder Mehra <re...@gmail.com>.
Hi,
I found the list. So required list is:
annotations.jar
kotlin-reflect.jar
kotlin-stdlib.jar
kotlin-stdlib-common.jar
kotlin-stdlib-jdk8.jar

For  something very basic, only thing I only needed was
kotlin-stdlib.jar(1.5.31) to run my program. I guess others are needed as
required. Thanks for help.


On Sat, Oct 30, 2021 at 1:04 PM Surinder Mehra <re...@gmail.com> wrote:

> I have mixed  setup, where java client trying to run kotlin function on
> ignite server. Also  i dont run server and client in intelliJ. If I run
> both client and server in IntelliJ, it works. So I am trying to find out
> what list of jars IntelliJ is providing which are missing in standalone
> ignite node libs.
> here are my steps.
> 1. compile and create jar file using gradle
> 2. copy jar file and kotlin stdlib-jdk8 file to local ignite/libs directory
> 3. start server node
> 4. start client node
>  5. Client and server both running ignite 2.11.0 and jdk : openjdk
> 11.0.12+7-LTS, OS : Linux 4.14.248-189.247.amzn2.x86_64 amd62
> MockTest.kt
>
> fun abc(x: Int): () -> Int ={
> println("Kotlin prints : " + (x*2))
> x*2
> }
>
> Java main file:
> Test{
> psvm(){
>
> IgniteConfiguration igniteConfiguration = new IgniteConfiguration()
>                 .setClientMode(true)
>                 .setPeerClassLoadingEnabled(true);
>
> Ignite ignite = Ignition.start(igniteConfiguration)
>
>     ignite.compute().run(() ->  abc(1).invoke());
> }
>
> Server node is simple ignite node with peer class loading enabled
>
> Exception : NoClassDefinitionFoundError kotlin/jvm/functions/Function0
>
> On Fri, Oct 29, 2021 at 8:09 PM Stephen Darlington <
> stephen.darlington@gridgain.com> wrote:
>
>> As long as it can peer-class-load the necessary classes (or they’re
>> already deployed on the server side) it should work. This works on my
>> machine:
>>
>> val cfg = IgniteConfiguration()
>>         .setClientMode(true)
>>         .setPeerClassLoadingEnabled(true)
>> Ignition.start(cfg)
>>         .use { ignite ->
>>             ignite.compute().run() { println("Hello") }
>>         }
>>
>>
>> On 29 Oct 2021, at 13:20, Surinder Mehra <re...@gmail.com> wrote:
>>
>> Hi Thanks much for investigating it with me.  After spending lot of time
>> on it, I found that client and servers were running on different JDK
>> versions. Client running in java 11 was submitting tasks to server node
>> running on java 8. I upgraded java version on server node and it worked.
>>
>> Actually I have another question. Does ignite needs any extra
>> dependencies to run tasks written in Kotlin. I am getting below error when
>> try to run kotlin code as part of task
>>
>> Caused by: java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
>> at com.test.TestTask.<clinit>(TestTask.kt:36)
>> Caused by: java.lang.ClassNotFoundException:
>> kotlin.jvm.internal.Intrinsics
>> at
>> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
>> at
>> java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
>> at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
>> ... 45 more
>>
>> On Wed, Oct 27, 2021 at 9:57 PM Stephen Darlington <
>> stephen.darlington@gridgain.com> wrote:
>>
>>> Using Ignite 2.11 and the following code works.
>>>
>>> Server:
>>>
>>> public class ComputeServer {
>>>     public static void main(String[] args) {
>>>         IgniteConfiguration igniteConfiguration = new IgniteConfiguration()
>>>                 .setPeerClassLoadingEnabled(true);
>>>         Ignite ignite = Ignition.start(igniteConfiguration);
>>>     }
>>> }
>>>
>>> Client:
>>>
>>> public class ComputeClient {
>>>     public static void main(String[] args) {
>>>         IgniteConfiguration igniteConfiguration = new IgniteConfiguration()
>>>                 .setClientMode(true)
>>>                 .setPeerClassLoadingEnabled(true);
>>>         try (Ignite ignite = Ignition.start(igniteConfiguration)) {
>>>             ignite.compute().run(() -> System.out.println("Hello, world"));
>>>         }
>>>
>>>     }
>>> }
>>>
>>> (It executes on server nodes by default; you don’t need to create a
>>> cluster group for that.)
>>>
>>> So I think you’ll need to share more about your configuration and/or
>>> code to get to the bottom of this.
>>>
>>> On 27 Oct 2021, at 16:47, Surinder Mehra <re...@gmail.com> wrote:
>>>
>>> Just wondering if it is possible at all. All examples/demos I have seen
>>> are either using a thin client  or one server node submitting a task to the
>>> grid, or with affinity to a particular node. I have tried all compute apis,
>>> like run, call, runAffinity. callaffinity, broadcast. none of them works
>>> when submitted from client node. They do run if I change clusterGroup to
>>> local nodes. like ClusterGroup grp = ignite.cluster().forLocalNodes();
>>>
>>> On Wed, Oct 27, 2021 at 6:20 PM Surinder Mehra <re...@gmail.com>
>>> wrote:
>>>
>>>> yes, it is enabled. Even if that wasn't enabled, I should get class not
>>>> found error. Here i dont get any error but its simply doesn't execute. I
>>>> see below flag needs to be enabled for thin client. Is there any
>>>> setting for thick clients as well ?
>>>>
>>>> https://ignite.apache.org/docs/latest/thin-clients/java-thin-client
>>>>
>>>> <bean class="org.apache.ignite.configuration.IgniteConfiguration" id="ignite.cfg">
>>>>     <property name="clientConnectorConfiguration">
>>>>         <bean class="org.apache.ignite.configuration.ClientConnectorConfiguration">
>>>>             <property name="thinClientConfiguration">
>>>>                 <bean class="org.apache.ignite.configuration.ThinClientConfiguration">
>>>>                     <property name="maxActiveComputeTasksPerConnection" value="100" />
>>>>                 </bean>
>>>>             </property>
>>>>         </bean>
>>>>     </property></bean>
>>>>
>>>>
>>>> On Wed, Oct 27, 2021 at 6:04 PM Stephen Darlington <
>>>> stephen.darlington@gridgain.com> wrote:
>>>>
>>>>> Did you enable peer class loading?
>>>>>
>>>>> > On 27 Oct 2021, at 13:18, Surinder Mehra <re...@gmail.com> wrote:
>>>>> >
>>>>> > Hi,
>>>>> > I have a sever node and a thick client node running. I am trying to
>>>>> submit ignite compute job from client node to server node but it doesn't
>>>>> work.
>>>>> >
>>>>> > ClusterGroup grp = ignite.cluster().forServers()
>>>>> > IgniteCompute ignieCompute = ignite.compute(grp);
>>>>> > igniteCompute.run(() ->  System.out.println("Task Executed"));
>>>>> >
>>>>> > Sysout never printed on console and client keeps running. If I
>>>>> change it to server mode, tasks completed immediately.
>>>>> >
>>>>> > Can someone help me understand if I am missing some configuration?
>>>>> >
>>>>>
>>>>>
>>>>>
>>>
>>>
>>
>>

Re: Submitting compute jobs from client node

Posted by Surinder Mehra <re...@gmail.com>.
I have mixed  setup, where java client trying to run kotlin function on
ignite server. Also  i dont run server and client in intelliJ. If I run
both client and server in IntelliJ, it works. So I am trying to find out
what list of jars IntelliJ is providing which are missing in standalone
ignite node libs.
here are my steps.
1. compile and create jar file using gradle
2. copy jar file and kotlin stdlib-jdk8 file to local ignite/libs directory
3. start server node
4. start client node
 5. Client and server both running ignite 2.11.0 and jdk : openjdk
11.0.12+7-LTS, OS : Linux 4.14.248-189.247.amzn2.x86_64 amd62
MockTest.kt

fun abc(x: Int): () -> Int ={
println("Kotlin prints : " + (x*2))
x*2
}

Java main file:
Test{
psvm(){

IgniteConfiguration igniteConfiguration = new IgniteConfiguration()
                .setClientMode(true)
                .setPeerClassLoadingEnabled(true);

Ignite ignite = Ignition.start(igniteConfiguration)

    ignite.compute().run(() ->  abc(1).invoke());
}

Server node is simple ignite node with peer class loading enabled

Exception : NoClassDefinitionFoundError kotlin/jvm/functions/Function0

On Fri, Oct 29, 2021 at 8:09 PM Stephen Darlington <
stephen.darlington@gridgain.com> wrote:

> As long as it can peer-class-load the necessary classes (or they’re
> already deployed on the server side) it should work. This works on my
> machine:
>
> val cfg = IgniteConfiguration()
>         .setClientMode(true)
>         .setPeerClassLoadingEnabled(true)
> Ignition.start(cfg)
>         .use { ignite ->
>             ignite.compute().run() { println("Hello") }
>         }
>
>
> On 29 Oct 2021, at 13:20, Surinder Mehra <re...@gmail.com> wrote:
>
> Hi Thanks much for investigating it with me.  After spending lot of time
> on it, I found that client and servers were running on different JDK
> versions. Client running in java 11 was submitting tasks to server node
> running on java 8. I upgraded java version on server node and it worked.
>
> Actually I have another question. Does ignite needs any extra dependencies
> to run tasks written in Kotlin. I am getting below error when try to run
> kotlin code as part of task
>
> Caused by: java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
> at com.test.TestTask.<clinit>(TestTask.kt:36)
> Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
> at
> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
> at
> java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
> at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
> ... 45 more
>
> On Wed, Oct 27, 2021 at 9:57 PM Stephen Darlington <
> stephen.darlington@gridgain.com> wrote:
>
>> Using Ignite 2.11 and the following code works.
>>
>> Server:
>>
>> public class ComputeServer {
>>     public static void main(String[] args) {
>>         IgniteConfiguration igniteConfiguration = new IgniteConfiguration()
>>                 .setPeerClassLoadingEnabled(true);
>>         Ignite ignite = Ignition.start(igniteConfiguration);
>>     }
>> }
>>
>> Client:
>>
>> public class ComputeClient {
>>     public static void main(String[] args) {
>>         IgniteConfiguration igniteConfiguration = new IgniteConfiguration()
>>                 .setClientMode(true)
>>                 .setPeerClassLoadingEnabled(true);
>>         try (Ignite ignite = Ignition.start(igniteConfiguration)) {
>>             ignite.compute().run(() -> System.out.println("Hello, world"));
>>         }
>>
>>     }
>> }
>>
>> (It executes on server nodes by default; you don’t need to create a
>> cluster group for that.)
>>
>> So I think you’ll need to share more about your configuration and/or code
>> to get to the bottom of this.
>>
>> On 27 Oct 2021, at 16:47, Surinder Mehra <re...@gmail.com> wrote:
>>
>> Just wondering if it is possible at all. All examples/demos I have seen
>> are either using a thin client  or one server node submitting a task to the
>> grid, or with affinity to a particular node. I have tried all compute apis,
>> like run, call, runAffinity. callaffinity, broadcast. none of them works
>> when submitted from client node. They do run if I change clusterGroup to
>> local nodes. like ClusterGroup grp = ignite.cluster().forLocalNodes();
>>
>> On Wed, Oct 27, 2021 at 6:20 PM Surinder Mehra <re...@gmail.com>
>> wrote:
>>
>>> yes, it is enabled. Even if that wasn't enabled, I should get class not
>>> found error. Here i dont get any error but its simply doesn't execute. I
>>> see below flag needs to be enabled for thin client. Is there any
>>> setting for thick clients as well ?
>>>
>>> https://ignite.apache.org/docs/latest/thin-clients/java-thin-client
>>>
>>> <bean class="org.apache.ignite.configuration.IgniteConfiguration" id="ignite.cfg">
>>>     <property name="clientConnectorConfiguration">
>>>         <bean class="org.apache.ignite.configuration.ClientConnectorConfiguration">
>>>             <property name="thinClientConfiguration">
>>>                 <bean class="org.apache.ignite.configuration.ThinClientConfiguration">
>>>                     <property name="maxActiveComputeTasksPerConnection" value="100" />
>>>                 </bean>
>>>             </property>
>>>         </bean>
>>>     </property></bean>
>>>
>>>
>>> On Wed, Oct 27, 2021 at 6:04 PM Stephen Darlington <
>>> stephen.darlington@gridgain.com> wrote:
>>>
>>>> Did you enable peer class loading?
>>>>
>>>> > On 27 Oct 2021, at 13:18, Surinder Mehra <re...@gmail.com> wrote:
>>>> >
>>>> > Hi,
>>>> > I have a sever node and a thick client node running. I am trying to
>>>> submit ignite compute job from client node to server node but it doesn't
>>>> work.
>>>> >
>>>> > ClusterGroup grp = ignite.cluster().forServers()
>>>> > IgniteCompute ignieCompute = ignite.compute(grp);
>>>> > igniteCompute.run(() ->  System.out.println("Task Executed"));
>>>> >
>>>> > Sysout never printed on console and client keeps running. If I change
>>>> it to server mode, tasks completed immediately.
>>>> >
>>>> > Can someone help me understand if I am missing some configuration?
>>>> >
>>>>
>>>>
>>>>
>>
>>
>
>

Re: Submitting compute jobs from client node

Posted by Stephen Darlington <st...@gridgain.com>.
As long as it can peer-class-load the necessary classes (or they’re already deployed on the server side) it should work. This works on my machine:
val cfg = IgniteConfiguration()
        .setClientMode(true)
        .setPeerClassLoadingEnabled(true)
Ignition.start(cfg)
        .use { ignite ->
            ignite.compute().run() { println("Hello") }
        }

> On 29 Oct 2021, at 13:20, Surinder Mehra <re...@gmail.com> wrote:
> 
> Hi Thanks much for investigating it with me.  After spending lot of time on it, I found that client and servers were running on different JDK versions. Client running in java 11 was submitting tasks to server node running on java 8. I upgraded java version on server node and it worked. 
> 
> Actually I have another question. Does ignite needs any extra dependencies to run tasks written in Kotlin. I am getting below error when try to run kotlin code as part of task
> 
> Caused by: java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
> 	at com.test.TestTask.<clinit>(TestTask.kt:36)
> Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
> 	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
> 	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
> 	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
> 	... 45 more
> 
> On Wed, Oct 27, 2021 at 9:57 PM Stephen Darlington <stephen.darlington@gridgain.com <ma...@gridgain.com>> wrote:
> Using Ignite 2.11 and the following code works.
> 
> Server:
> public class ComputeServer {
>     public static void main(String[] args) {
>         IgniteConfiguration igniteConfiguration = new IgniteConfiguration()
>                 .setPeerClassLoadingEnabled(true);
>         Ignite ignite = Ignition.start(igniteConfiguration);
>     }
> }
> Client:
> public class ComputeClient {
>     public static void main(String[] args) {
>         IgniteConfiguration igniteConfiguration = new IgniteConfiguration()
>                 .setClientMode(true)
>                 .setPeerClassLoadingEnabled(true);
>         try (Ignite ignite = Ignition.start(igniteConfiguration)) {
>             ignite.compute().run(() -> System.out.println("Hello, world"));
>         }
> 
>     }
> }
> (It executes on server nodes by default; you don’t need to create a cluster group for that.)
> 
> So I think you’ll need to share more about your configuration and/or code to get to the bottom of this. 
> 
>> On 27 Oct 2021, at 16:47, Surinder Mehra <rednirus@gmail.com <ma...@gmail.com>> wrote:
>> 
>> Just wondering if it is possible at all. All examples/demos I have seen are either using a thin client  or one server node submitting a task to the grid, or with affinity to a particular node. I have tried all compute apis, like run, call, runAffinity. callaffinity, broadcast. none of them works when submitted from client node. They do run if I change clusterGroup to local nodes. like ClusterGroup grp = ignite.cluster().forLocalNodes();
>> 
>> On Wed, Oct 27, 2021 at 6:20 PM Surinder Mehra <rednirus@gmail.com <ma...@gmail.com>> wrote:
>> yes, it is enabled. Even if that wasn't enabled, I should get class not found error. Here i dont get any error but its simply doesn't execute. I see below flag needs to be enabled for thin client. Is there any setting for thick clients as well ?
>> 
>> https://ignite.apache.org/docs/latest/thin-clients/java-thin-client <https://ignite.apache.org/docs/latest/thin-clients/java-thin-client>
>> 
>> <bean class="org.apache.ignite.configuration.IgniteConfiguration" id="ignite.cfg">
>>     <property name="clientConnectorConfiguration">
>>         <bean class="org.apache.ignite.configuration.ClientConnectorConfiguration">
>>             <property name="thinClientConfiguration">
>>                 <bean class="org.apache.ignite.configuration.ThinClientConfiguration">
>>                     <property name="maxActiveComputeTasksPerConnection" value="100" />
>>                 </bean>
>>             </property>
>>         </bean>
>>     </property>
>> </bean>
>> 
>> On Wed, Oct 27, 2021 at 6:04 PM Stephen Darlington <stephen.darlington@gridgain.com <ma...@gridgain.com>> wrote:
>> Did you enable peer class loading?
>> 
>> > On 27 Oct 2021, at 13:18, Surinder Mehra <rednirus@gmail.com <ma...@gmail.com>> wrote:
>> > 
>> > Hi,
>> > I have a sever node and a thick client node running. I am trying to submit ignite compute job from client node to server node but it doesn't work.
>> > 
>> > ClusterGroup grp = ignite.cluster().forServers()
>> > IgniteCompute ignieCompute = ignite.compute(grp);
>> > igniteCompute.run(() ->  System.out.println("Task Executed"));
>> > 
>> > Sysout never printed on console and client keeps running. If I change it to server mode, tasks completed immediately.
>> > 
>> > Can someone help me understand if I am missing some configuration?
>> > 
>> 
>> 
> 
> 



Re: Submitting compute jobs from client node

Posted by Surinder Mehra <re...@gmail.com>.
Hi Thanks much for investigating it with me.  After spending lot of time on
it, I found that client and servers were running on different JDK versions.
Client running in java 11 was submitting tasks to server node running on
java 8. I upgraded java version on server node and it worked.

Actually I have another question. Does ignite needs any extra dependencies
to run tasks written in Kotlin. I am getting below error when try to run
kotlin code as part of task

Caused by: java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
at com.test.TestTask.<clinit>(TestTask.kt:36)
Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
at
java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at
java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 45 more

On Wed, Oct 27, 2021 at 9:57 PM Stephen Darlington <
stephen.darlington@gridgain.com> wrote:

> Using Ignite 2.11 and the following code works.
>
> Server:
>
> public class ComputeServer {
>     public static void main(String[] args) {
>         IgniteConfiguration igniteConfiguration = new IgniteConfiguration()
>                 .setPeerClassLoadingEnabled(true);
>         Ignite ignite = Ignition.start(igniteConfiguration);
>     }
> }
>
> Client:
>
> public class ComputeClient {
>     public static void main(String[] args) {
>         IgniteConfiguration igniteConfiguration = new IgniteConfiguration()
>                 .setClientMode(true)
>                 .setPeerClassLoadingEnabled(true);
>         try (Ignite ignite = Ignition.start(igniteConfiguration)) {
>             ignite.compute().run(() -> System.out.println("Hello, world"));
>         }
>
>     }
> }
>
> (It executes on server nodes by default; you don’t need to create a
> cluster group for that.)
>
> So I think you’ll need to share more about your configuration and/or code
> to get to the bottom of this.
>
> On 27 Oct 2021, at 16:47, Surinder Mehra <re...@gmail.com> wrote:
>
> Just wondering if it is possible at all. All examples/demos I have seen
> are either using a thin client  or one server node submitting a task to the
> grid, or with affinity to a particular node. I have tried all compute apis,
> like run, call, runAffinity. callaffinity, broadcast. none of them works
> when submitted from client node. They do run if I change clusterGroup to
> local nodes. like ClusterGroup grp = ignite.cluster().forLocalNodes();
>
> On Wed, Oct 27, 2021 at 6:20 PM Surinder Mehra <re...@gmail.com> wrote:
>
>> yes, it is enabled. Even if that wasn't enabled, I should get class not
>> found error. Here i dont get any error but its simply doesn't execute. I
>> see below flag needs to be enabled for thin client. Is there any
>> setting for thick clients as well ?
>>
>> https://ignite.apache.org/docs/latest/thin-clients/java-thin-client
>>
>> <bean class="org.apache.ignite.configuration.IgniteConfiguration" id="ignite.cfg">
>>     <property name="clientConnectorConfiguration">
>>         <bean class="org.apache.ignite.configuration.ClientConnectorConfiguration">
>>             <property name="thinClientConfiguration">
>>                 <bean class="org.apache.ignite.configuration.ThinClientConfiguration">
>>                     <property name="maxActiveComputeTasksPerConnection" value="100" />
>>                 </bean>
>>             </property>
>>         </bean>
>>     </property></bean>
>>
>>
>> On Wed, Oct 27, 2021 at 6:04 PM Stephen Darlington <
>> stephen.darlington@gridgain.com> wrote:
>>
>>> Did you enable peer class loading?
>>>
>>> > On 27 Oct 2021, at 13:18, Surinder Mehra <re...@gmail.com> wrote:
>>> >
>>> > Hi,
>>> > I have a sever node and a thick client node running. I am trying to
>>> submit ignite compute job from client node to server node but it doesn't
>>> work.
>>> >
>>> > ClusterGroup grp = ignite.cluster().forServers()
>>> > IgniteCompute ignieCompute = ignite.compute(grp);
>>> > igniteCompute.run(() ->  System.out.println("Task Executed"));
>>> >
>>> > Sysout never printed on console and client keeps running. If I change
>>> it to server mode, tasks completed immediately.
>>> >
>>> > Can someone help me understand if I am missing some configuration?
>>> >
>>>
>>>
>>>
>
>

Re: Submitting compute jobs from client node

Posted by Stephen Darlington <st...@gridgain.com>.
Using Ignite 2.11 and the following code works.

Server:
public class ComputeServer {
    public static void main(String[] args) {
        IgniteConfiguration igniteConfiguration = new IgniteConfiguration()
                .setPeerClassLoadingEnabled(true);
        Ignite ignite = Ignition.start(igniteConfiguration);
    }
}
Client:
public class ComputeClient {
    public static void main(String[] args) {
        IgniteConfiguration igniteConfiguration = new IgniteConfiguration()
                .setClientMode(true)
                .setPeerClassLoadingEnabled(true);
        try (Ignite ignite = Ignition.start(igniteConfiguration)) {
            ignite.compute().run(() -> System.out.println("Hello, world"));
        }

    }
}
(It executes on server nodes by default; you don’t need to create a cluster group for that.)

So I think you’ll need to share more about your configuration and/or code to get to the bottom of this. 

> On 27 Oct 2021, at 16:47, Surinder Mehra <re...@gmail.com> wrote:
> 
> Just wondering if it is possible at all. All examples/demos I have seen are either using a thin client  or one server node submitting a task to the grid, or with affinity to a particular node. I have tried all compute apis, like run, call, runAffinity. callaffinity, broadcast. none of them works when submitted from client node. They do run if I change clusterGroup to local nodes. like ClusterGroup grp = ignite.cluster().forLocalNodes();
> 
> On Wed, Oct 27, 2021 at 6:20 PM Surinder Mehra <rednirus@gmail.com <ma...@gmail.com>> wrote:
> yes, it is enabled. Even if that wasn't enabled, I should get class not found error. Here i dont get any error but its simply doesn't execute. I see below flag needs to be enabled for thin client. Is there any setting for thick clients as well ?
> 
> https://ignite.apache.org/docs/latest/thin-clients/java-thin-client <https://ignite.apache.org/docs/latest/thin-clients/java-thin-client>
> 
> <bean class="org.apache.ignite.configuration.IgniteConfiguration" id="ignite.cfg">
>     <property name="clientConnectorConfiguration">
>         <bean class="org.apache.ignite.configuration.ClientConnectorConfiguration">
>             <property name="thinClientConfiguration">
>                 <bean class="org.apache.ignite.configuration.ThinClientConfiguration">
>                     <property name="maxActiveComputeTasksPerConnection" value="100" />
>                 </bean>
>             </property>
>         </bean>
>     </property>
> </bean>
> 
> On Wed, Oct 27, 2021 at 6:04 PM Stephen Darlington <stephen.darlington@gridgain.com <ma...@gridgain.com>> wrote:
> Did you enable peer class loading?
> 
> > On 27 Oct 2021, at 13:18, Surinder Mehra <rednirus@gmail.com <ma...@gmail.com>> wrote:
> > 
> > Hi,
> > I have a sever node and a thick client node running. I am trying to submit ignite compute job from client node to server node but it doesn't work.
> > 
> > ClusterGroup grp = ignite.cluster().forServers()
> > IgniteCompute ignieCompute = ignite.compute(grp);
> > igniteCompute.run(() ->  System.out.println("Task Executed"));
> > 
> > Sysout never printed on console and client keeps running. If I change it to server mode, tasks completed immediately.
> > 
> > Can someone help me understand if I am missing some configuration?
> > 
> 
> 



Re: Submitting compute jobs from client node

Posted by Surinder Mehra <re...@gmail.com>.
Just wondering if it is possible at all. All examples/demos I have seen are
either using a thin client  or one server node submitting a task to the
grid, or with affinity to a particular node. I have tried all compute apis,
like run, call, runAffinity. callaffinity, broadcast. none of them works
when submitted from client node. They do run if I change clusterGroup to
local nodes. like ClusterGroup grp = ignite.cluster().forLocalNodes();

On Wed, Oct 27, 2021 at 6:20 PM Surinder Mehra <re...@gmail.com> wrote:

> yes, it is enabled. Even if that wasn't enabled, I should get class not
> found error. Here i dont get any error but its simply doesn't execute. I
> see below flag needs to be enabled for thin client. Is there any
> setting for thick clients as well ?
>
> https://ignite.apache.org/docs/latest/thin-clients/java-thin-client
>
> <bean class="org.apache.ignite.configuration.IgniteConfiguration" id="ignite.cfg">
>     <property name="clientConnectorConfiguration">
>         <bean class="org.apache.ignite.configuration.ClientConnectorConfiguration">
>             <property name="thinClientConfiguration">
>                 <bean class="org.apache.ignite.configuration.ThinClientConfiguration">
>                     <property name="maxActiveComputeTasksPerConnection" value="100" />
>                 </bean>
>             </property>
>         </bean>
>     </property></bean>
>
>
> On Wed, Oct 27, 2021 at 6:04 PM Stephen Darlington <
> stephen.darlington@gridgain.com> wrote:
>
>> Did you enable peer class loading?
>>
>> > On 27 Oct 2021, at 13:18, Surinder Mehra <re...@gmail.com> wrote:
>> >
>> > Hi,
>> > I have a sever node and a thick client node running. I am trying to
>> submit ignite compute job from client node to server node but it doesn't
>> work.
>> >
>> > ClusterGroup grp = ignite.cluster().forServers()
>> > IgniteCompute ignieCompute = ignite.compute(grp);
>> > igniteCompute.run(() ->  System.out.println("Task Executed"));
>> >
>> > Sysout never printed on console and client keeps running. If I change
>> it to server mode, tasks completed immediately.
>> >
>> > Can someone help me understand if I am missing some configuration?
>> >
>>
>>
>>

Re: Submitting compute jobs from client node

Posted by Surinder Mehra <re...@gmail.com>.
yes, it is enabled. Even if that wasn't enabled, I should get class not
found error. Here i dont get any error but its simply doesn't execute. I
see below flag needs to be enabled for thin client. Is there any
setting for thick clients as well ?

https://ignite.apache.org/docs/latest/thin-clients/java-thin-client

<bean class="org.apache.ignite.configuration.IgniteConfiguration"
id="ignite.cfg">
    <property name="clientConnectorConfiguration">
        <bean class="org.apache.ignite.configuration.ClientConnectorConfiguration">
            <property name="thinClientConfiguration">
                <bean
class="org.apache.ignite.configuration.ThinClientConfiguration">
                    <property
name="maxActiveComputeTasksPerConnection" value="100" />
                </bean>
            </property>
        </bean>
    </property></bean>


On Wed, Oct 27, 2021 at 6:04 PM Stephen Darlington <
stephen.darlington@gridgain.com> wrote:

> Did you enable peer class loading?
>
> > On 27 Oct 2021, at 13:18, Surinder Mehra <re...@gmail.com> wrote:
> >
> > Hi,
> > I have a sever node and a thick client node running. I am trying to
> submit ignite compute job from client node to server node but it doesn't
> work.
> >
> > ClusterGroup grp = ignite.cluster().forServers()
> > IgniteCompute ignieCompute = ignite.compute(grp);
> > igniteCompute.run(() ->  System.out.println("Task Executed"));
> >
> > Sysout never printed on console and client keeps running. If I change it
> to server mode, tasks completed immediately.
> >
> > Can someone help me understand if I am missing some configuration?
> >
>
>
>

Re: Submitting compute jobs from client node

Posted by Stephen Darlington <st...@gridgain.com>.
Did you enable peer class loading?

> On 27 Oct 2021, at 13:18, Surinder Mehra <re...@gmail.com> wrote:
> 
> Hi,
> I have a sever node and a thick client node running. I am trying to submit ignite compute job from client node to server node but it doesn't work.
> 
> ClusterGroup grp = ignite.cluster().forServers()
> IgniteCompute ignieCompute = ignite.compute(grp);
> igniteCompute.run(() ->  System.out.println("Task Executed"));
> 
> Sysout never printed on console and client keeps running. If I change it to server mode, tasks completed immediately.
> 
> Can someone help me understand if I am missing some configuration?
>