]
Adrian Nistor updated ISPN-5729:
--------------------------------
Status: Pull Request Sent (was: Coding In Progress)
Git Pull Request:
Remote query - org/apache/lucene/uninverting/UninvertingReader
missing on "order by" query
------------------------------------------------------------------------------------------
Key: ISPN-5729
URL:
https://issues.jboss.org/browse/ISPN-5729
Project: Infinispan
Issue Type: Bug
Components: Remote Querying
Affects Versions: 8.0.0.Final
Reporter: Matej Čimbora
Assignee: Adrian Nistor
Fix For: 9.0.0.Beta2
Consider simple NumberObject class with the following attributes:
private int integerValue;
private double doubleValue;
The following query leads to NoClassDefFoundError on server. Looks like using orderBy
causes the problem.
{code}
QueryBuilder<Query> builder =
qf.from(NumberObject.class).orderBy("integerValue").having("integerValue").gte(50).and().having("integerValue").lte(150).toBuilder();
{code}
Use the following snippet to load data into cache.
{code}
final int numEntries = 200;
for (int i = 0; i < numEntries; i++) {
NumberObject no = new NumberObject(i, i);
manager.cache.put(i, no);
}
{code}
Server exception:
12:55:24,158 ERROR [org.infinispan.server.hotrod.CacheDecodeContext]
(HotRodServerWorker-9-1) ISPN005009: Unexpected error before any request parameters read:
io.netty.handler.codec.DecoderException: java.lang.NoClassDefFoundError:
org/apache/lucene/uninverting/UninvertingReader$Type
at io.netty.handler.codec.ReplayingDecoder.callDecode(ReplayingDecoder.java:425)
at
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:168)
at
org.infinispan.server.hotrod.HotRodDecoder.org$infinispan$server$core$transport$StatsChannelHandler$$super$channelRead(HotRodDecoder.scala:31)
at
org.infinispan.server.core.transport.StatsChannelHandler$class.channelRead(StatsChannelHandler.scala:32)
at org.infinispan.server.hotrod.HotRodDecoder.channelRead(HotRodDecoder.scala:31)
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308)
at
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294)
at
io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:846)
at
io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:130)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511)
at
io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)
at
io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116)
at
io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoClassDefFoundError:
org/apache/lucene/uninverting/UninvertingReader$Type
at
org.hibernate.search.reader.impl.ManagedMultiReader.getMappings(ManagedMultiReader.java:102)
at
org.hibernate.search.reader.impl.ManagedMultiReader.getEffectiveReaders(ManagedMultiReader.java:68)
at
org.hibernate.search.reader.impl.ManagedMultiReader.createInstance(ManagedMultiReader.java:53)
at
org.hibernate.search.reader.impl.MultiReaderFactory.openReader(MultiReaderFactory.java:52)
at
org.hibernate.search.query.engine.impl.HSQueryImpl.buildSearcher(HSQueryImpl.java:619)
at
org.hibernate.search.query.engine.impl.HSQueryImpl.buildSearcher(HSQueryImpl.java:523)
at
org.hibernate.search.query.engine.impl.HSQueryImpl.queryEntityInfos(HSQueryImpl.java:263)
at org.infinispan.query.impl.CacheQueryImpl.list(CacheQueryImpl.java:161)
at
org.infinispan.query.dsl.embedded.impl.EmbeddedLuceneQuery.list(EmbeddedLuceneQuery.java:49)
at
org.infinispan.query.remote.impl.QueryFacadeImpl.makeResponse(QueryFacadeImpl.java:84)
at org.infinispan.query.remote.impl.QueryFacadeImpl.query(QueryFacadeImpl.java:64)
at org.infinispan.server.hotrod.Decoder2x$.customReadKey(Decoder2x.scala:370)
at org.infinispan.server.hotrod.HotRodDecoder.customDecodeKey(HotRodDecoder.scala:194)
at
org.infinispan.server.hotrod.HotRodDecoder.org$infinispan$server$hotrod$HotRodDecoder$$decodeKey(HotRodDecoder.scala:104)
at
org.infinispan.server.hotrod.HotRodDecoder$$anonfun$decode$1.apply$mcV$sp(HotRodDecoder.scala:48)
at org.infinispan.server.hotrod.HotRodDecoder.wrapSecurity(HotRodDecoder.scala:206)
at org.infinispan.server.hotrod.HotRodDecoder.decode(HotRodDecoder.scala:45)
at io.netty.handler.codec.ReplayingDecoder.callDecode(ReplayingDecoder.java:370)
... 15 more
Caused by: java.lang.ClassNotFoundException:
org.apache.lucene.uninverting.UninvertingReader$Type from [Module
"org.hibernate.search.engine:main" from local module loader @11028347 (finder:
local module finder @14899482 (roots:
/home/mcimbora/Projects/infinispan/infinispan/server/integration/build/target/infinispan-server-8.0.0.Final/modules,/home/mcimbora/Projects/infinispan/infinispan/server/integration/build/target/infinispan-server-8.0.0.Final/modules/system/layers/base))]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:205)
at
org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:455)
at
org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:404)
at
org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:385)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:130)
... 33 more
Cache configuration
{code:xml}
<distributed-cache name="dist_infinispan" mode="SYNC">
<locking acquire-timeout="3000" concurrency-level="1000"/>
<transaction mode="NONE"/>
<indexing index="LOCAL">
<property
name="default.directory_provider">infinispan</property>
<property
name="default.indexmanager">org.infinispan.query.indexmanager.InfinispanIndexManager</property>
<property
name="default.exclusive_index_use">true</property>
<property
name="default.metadata_cachename">lucene_metadata_repl</property>
<property
name="default.data_cachename">lucene_data_repl</property>
<property
name="default.locking_cachename">lucene_locking_repl</property>
</indexing>
</distributed-cache>
<replicated-cache name="lucene_metadata_repl" mode="SYNC"/>
<replicated-cache name="lucene_locking_repl" mode="SYNC"/>
<replicated-cache name="lucene_data_repl" mode="SYNC"/>
{code}