'After upgrade to java from 11.0.5 to 11.0.6 Lucene maxDoc failed
Our search system process on java 11.0.2, now we want to upgrade it to 11.0.8 or upper... After upgrading to 11.0.6 or upper versions, Lucene RMI connection between servers failed:
java.rmi.RemoteException: Method is not Remote: interface org.apache.lucene.search.Searchable::public abstract int org.apache.lucene.search.Searchable.maxDoc() throws java.io.IOException
at java.rmi/java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:214)
at java.rmi/java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:162)
at com.sun.proxy.$Proxy124.maxDoc(Unknown Source)
at com.exlibris.jaguar.mng.search.Searcher.reset(Searcher.java:444)
at com.exlibris.jaguar.mng.search.Searcher.<init>(Searcher.java:279)
at com.exlibris.jaguar.mng.search.Searcher.getInstance(Searcher.java:344)
at com.exlibris.jaguar.ejbs.JaguarSearchBean.searchB(JaguarSearchBean.java:212)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:319)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.remoting.support.RemoteInvocationTraceInterceptor.invoke(RemoteInvocationTraceInterceptor.java:77)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at com.sun.proxy.$Proxy15.searchB(Unknown Source)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.springframework.remoting.support.RemoteInvocation.invoke(RemoteInvocation.java:205)
at org.springframework.remoting.support.DefaultRemoteInvocationExecutor.invoke(DefaultRemoteInvocationExecutor.java:38)
at org.springframework.remoting.support.RemoteInvocationBasedExporter.invoke(RemoteInvocationBasedExporter.java:78)
at org.springframework.remoting.rmi.RmiBasedExporter.invoke(RmiBasedExporter.java:73)
at org.springframework.remoting.rmi.RmiInvocationWrapper.invoke(RmiInvocationWrapper.java:72)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:359)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:562)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:796)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:677)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:676)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
try {
sliceRemote = (JaguarSearchable)RmiUtil.lookupRemote(
RmiUtil.REMOTE_OBJ_PREFIX + slice.getId(),
Integer.parseInt(port), host);
} catch (Exception ee) {
logger.warn("Searcher.reset: Slice " + slice.getId() + " is down. Skipping it");
}
try {
int maxDoc=sliceRemote.maxDoc();
logger.error("max dox " +maxDoc + " of slice:" +slice.getId() + " of group:" + groupId);
} catch (Exception e) {
logger.error("Cannot get max dox of slice:" +slice.getId() + " of group:" + groupId,e);
}
Run with java_home 11.0.6 and upper failed.. Run with java 11.0.5 and lower successfully..
Version of Lucene is 3.6.2 lucene-analyzers-3.6.2.jar lucene-core-3.6.2.jar lucene-highlighter-3.6.2.jar lucene-memory-3.6.2.jar lucene-queries-3.6.2.jar lucene-queryparser-3.6.2.jar lucene-remote-3.6.2.jar lucene-snowball-3.0.3.jar
Solution 1:[1]
Ok. I found problem. After upgrade java upper to 11.0.5 Lucene RMI finish to found method maxDoc from interface org.apache.lucene.search.Searchable.
JaguarSearchable extends RMIRemoteSearchable that RMIRemoteSearchable extends Searchable, Remote Searchable contains maxDoc but RMI not found it.
After I was overridden maxDoc in JaguarSearchable all start working fine.
I don't know why it happen when update to 11.0.6 and upper version.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | David Ben David |
