You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@geode.apache.org by Храмченков Николай <xn...@yandex.ru> on 2017/11/30 08:00:00 UTC
ClassNotFoundException on FunctionService.onRegion(...).execute(function)
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.
Re: ClassNotFoundException on
FunctionService.onRegion(...).execute(function)
Posted by Anthony Baker <ab...@pivotal.io>.
The Function implementation needs to be resolvable on the server classpath. This can be done using `gfsh deploy …` or explicitly setting the classpath when starting the server.
Anthony
> On Nov 30, 2017, at 12:58 AM, Храмченков Николай <xn...@yandex.ru> wrote:
>
> Hi,
>
> I tried already with anonymous and non the anonymous classes, but result is the same ClassNotFoundException.
> I thought there is some obvious explanation to this exception.
>
> 30.11.2017, 11:27, "Olivier Mallassi" <ol...@gmail.com>:
>> 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, Храмченков Николай <xnike@yandex.ru <ma...@yandex.ru>> 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$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.
Re: ClassNotFoundException on FunctionService.onRegion(...).execute(function)
Posted by Olivier Mallassi <ol...@gmail.com>.
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, Храмченков Николай <xn...@yandex.ru> 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.
>