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 <redni...@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.darling...@gridgain.com <mailto:stephen.darling...@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 <redni...@gmail.com 
>> <mailto:redni...@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 <redni...@gmail.com 
>> <mailto:redni...@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.darling...@gridgain.com <mailto:stephen.darling...@gridgain.com>> 
>> wrote:
>> Did you enable peer class loading?
>> 
>> > On 27 Oct 2021, at 13:18, Surinder Mehra <redni...@gmail.com 
>> > <mailto:redni...@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?
>> > 
>> 
>> 
> 
> 


Reply via email to