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$ExecuteRegionFunctionSingleHopOpImpl.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