not sure but could be worth trying with a concrete Function class (like
MyFunction implements/extends Function)  and not the anonymous one.
again, not sure.

HTH

On Thu, Nov 30, 2017 at 9:00 AM, Храмченков Николай <[email protected]> wrote:

> Hello,
> I tried to execute a locally defined function over apache-geode-1.1.1
> cluster but getting ClassNotFoundException
>
> public class Test {
>     public static void main(String[] args) throws Throwable {
> ...
>         final Function function = new Function() {
>
>             @Override
>             public void execute(FunctionContext functionContext) {
>                 System.out.println("XXX");
>             }
>
>             @Override
>             public String getId() {
>                 return "XXX";
>             }
>         };
> ...
>         FunctionService.onRegion(...).execute(function);
> ....
>     }
> }
>
> Stacktrace:
>
> Exception in thread "main" org.apache.geode.cache.execute.FunctionException:
> org.apache.geode.cache.client.ServerOperationException: remote server on
> x(GemfireClient:553544:loner):62881:6206bf0b:GemfireClient: While
> performing a remote executeRegionFunctionSingleHop
>         at org.apache.geode.internal.cache.execute.
> ServerRegionFunctionExecutor.executeOnServer(ServerRegionFunctionExecutor.
> java:233)
>         at org.apache.geode.internal.cache.execute.
> ServerRegionFunctionExecutor.executeFunction(ServerRegionFunctionExecutor.
> java:167)
>         at org.apache.geode.internal.cache.execute.
> AbstractExecution.execute(AbstractExecution.java:420)
>         at Test.main(Test.java:40)
> Caused by: org.apache.geode.cache.client.ServerOperationException: remote
> server on x(GemfireClient:553544:loner):62881:6206bf0b:GemfireClient:
> While performing a remote executeRegionFunctionSingleHop
>         at org.apache.geode.cache.client.internal.
> ExecuteRegionFunctionSingleHopOp$ExecuteRegionFunctionSingleHop
> OpImpl.processResponse(ExecuteRegionFunctionSingleHopOp.java:439)
>         at org.apache.geode.cache.client.internal.AbstractOp.
> processResponse(AbstractOp.java:225)
>         at org.apache.geode.cache.client.internal.AbstractOp.
> attemptReadResponse(AbstractOp.java:164)
>         at org.apache.geode.cache.client.internal.AbstractOp.attempt(
> AbstractOp.java:388)
>         at org.apache.geode.cache.client.internal.ConnectionImpl.
> execute(ConnectionImpl.java:267)
>         at org.apache.geode.cache.client.internal.pooling.
> PooledConnection.execute(PooledConnection.java:328)
>         at org.apache.geode.cache.client.internal.OpExecutorImpl.
> executeWithPossibleReAuthentication(OpExecutorImpl.java:937)
>         at org.apache.geode.cache.client.internal.OpExecutorImpl.
> executeOnServer(OpExecutorImpl.java:369)
>         at org.apache.geode.cache.client.internal.OpExecutorImpl.
> executeOn(OpExecutorImpl.java:333)
>         at org.apache.geode.cache.client.internal.PoolImpl.executeOn(
> PoolImpl.java:733)
>         at org.apache.geode.cache.client.internal.
> SingleHopOperationCallable.call(SingleHopOperationCallable.java:55)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(
> ThreadPoolExecutor.java:1149)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(
> ThreadPoolExecutor.java:624)
>         at java.lang.Thread.run(Thread.java:748)
> Caused by: java.lang.ClassNotFoundException: Test$1
>         at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>         at java.lang.Class.forName0(Native Method)
>         at java.lang.Class.forName(Class.java:348)
>         at java.io.ObjectInputStream.resolveClass(
> ObjectInputStream.java:628)
>         at org.apache.geode.internal.InternalDataSerializer$
> DSObjectInputStream.resolveClass(InternalDataSerializer.java:3605)
>         at java.io.ObjectInputStream.readNonProxyDesc(
> ObjectInputStream.java:1620)
>         at java.io.ObjectInputStream.readClassDesc(
> ObjectInputStream.java:1521)
>         at java.io.ObjectInputStream.readOrdinaryObject(
> ObjectInputStream.java:1781)
>         at java.io.ObjectInputStream.readObject0(ObjectInputStream.
> java:1353)
>         at java.io.ObjectInputStream.readObject(ObjectInputStream.
> java:373)
>         at org.apache.geode.internal.VersionedObjectInput.readObject(
> VersionedObjectInput.java:176)
>         at org.apache.geode.internal.InternalDataSerializer.
> basicReadObject(InternalDataSerializer.java:2992)
>         at org.apache.geode.DataSerializer.readObject(
> DataSerializer.java:2897)
>         at org.apache.geode.internal.util.BlobHelper.
> deserializeBlob(BlobHelper.java:99)
>         at org.apache.geode.internal.cache.tier.sockets.
> CacheServerHelper.deserialize(CacheServerHelper.java:76)
>         at org.apache.geode.internal.cache.tier.sockets.Part.
> getObject(Part.java:268)
>         at org.apache.geode.internal.cache.tier.sockets.Part.
> getObject(Part.java:276)
>         at org.apache.geode.internal.cache.tier.sockets.Part.
> getStringOrObject(Part.java:281)
>         at org.apache.geode.internal.cache.tier.sockets.command.
> ExecuteRegionFunctionSingleHop.cmdExecute(ExecuteRegionFunctionSingleHop
> .java:98)
>         at org.apache.geode.internal.cache.tier.sockets.
> BaseCommand.execute(BaseCommand.java:141)
>         at org.apache.geode.internal.cache.tier.sockets.
> ServerConnection.doNormalMsg(ServerConnection.java:783)
>         at org.apache.geode.internal.cache.tier.sockets.
> ServerConnection.doOneMessage(ServerConnection.java:914)
>         at org.apache.geode.internal.cache.tier.sockets.
> ServerConnection.run(ServerConnection.java:1171)
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(
> ThreadPoolExecutor.java:1142)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(
> ThreadPoolExecutor.java:617)
>         at org.apache.geode.internal.cache.tier.sockets.
> AcceptorImpl$1$1.run(AcceptorImpl.java:519)
>         at java.lang.Thread.run(Thread.java:745)
>
> As per documentation I should not deploy jar with defined functions via
> gfsh to run programmatically defined functions.
> Please advice what I miss that leads to such exception.
>

Reply via email to