[
https://issues.apache.org/jira/browse/SOLR-6357?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16263448#comment-16263448
]
Andrew Hankinson commented on SOLR-6357:
----------------------------------------
I'm still seeing a problem related to this in Solr 7.0.1 (OSX) and 7.1.0
(RHEL7).
*Sample data:*
collections_sm is a dynamic multivalued string field. All others are string
fields.
{code:json}
{
"id":"1234",
"object_id":"1234",
"type":"object"
"collections_sm":["printed books"]
}
{
"id":"4567",
"object_id":"1234",
"type":"surface"
}
{
"id":"7890",
"object_id":"1234",
"type":"image"
}
{code}
*Query:*
{code}
<delete><query>{!join from=id to=object_id}collections_sm:('printed
books')</query></delete>
{code}
{code}
2017-11-22 22:00:20.802 INFO (qtp466002798-19) [ x:mycore]
o.a.s.u.p.LogUpdateProcessorFactory [mycore] webapp=/solr path=/update
params={commit=true}{deleteByQuery={!join from=id
to=object_id}collections_sm:('printed books') (-1584805205294186496)} 0 5
2017-11-22 22:00:20.802 ERROR (qtp466002798-19) [ x:mycore]
o.a.s.h.RequestHandlerBase org.apache.lucene.store.AlreadyClosedException: this
IndexWriter is closed
{code}
What's more, is that this seems to put the index in a corrupt state -- it will
not accept any more write or modification operations to the core until the data
directory is deleted. Any attempts to make changes to the core will result in
an error:
{code}
Caused by: java.lang.ClassCastException: org.apache.lucene.search.IndexSearcher
cannot be cast to org.apache.solr.search.SolrIndexSearcher
at
org.apache.solr.search.JoinQuery.createWeight(JoinQParserPlugin.java:169)
at
org.apache.lucene.search.IndexSearcher.createWeight(IndexSearcher.java:734)
at org.apache.lucene.search.BooleanWeight.<init>(BooleanWeight.java:54)
at
org.apache.lucene.search.BooleanQuery.createWeight(BooleanQuery.java:204)
at
org.apache.solr.update.DeleteByQueryWrapper.createWeight(DeleteByQueryWrapper.java:72)
at
org.apache.lucene.search.IndexSearcher.createWeight(IndexSearcher.java:734)
at
org.apache.lucene.search.IndexSearcher.createNormalizedWeight(IndexSearcher.java:724)
at
org.apache.lucene.index.FrozenBufferedUpdates.applyQueryDeletes(FrozenBufferedUpdates.java:687)
at
org.apache.lucene.index.FrozenBufferedUpdates.apply(FrozenBufferedUpdates.java:443)
at
org.apache.lucene.index.FrozenBufferedUpdates.apply(FrozenBufferedUpdates.java:324)
at
org.apache.lucene.index.DocumentsWriter$ResolveUpdatesEvent.process(DocumentsWriter.java:723)
at
org.apache.lucene.index.IndexWriter.processEvents(IndexWriter.java:5057)
at
org.apache.lucene.index.IndexWriter.processEvents(IndexWriter.java:5045)
at org.apache.lucene.index.IndexWriter.getReader(IndexWriter.java:466)
at
org.apache.lucene.index.StandardDirectoryReader.doOpenFromWriter(StandardDirectoryReader.java:293)
at
org.apache.lucene.index.StandardDirectoryReader.doOpenIfChanged(StandardDirectoryReader.java:278)
at
org.apache.lucene.index.DirectoryReader.openIfChanged(DirectoryReader.java:235)
at org.apache.solr.core.SolrCore.openNewSearcher(SolrCore.java:1987)
at
org.apache.solr.update.UpdateLog.openRealtimeSearcher(UpdateLog.java:648)
at org.apache.solr.update.UpdateLog.deleteByQuery(UpdateLog.java:629)
at
org.apache.solr.update.DirectUpdateHandler2.deleteByQuery(DirectUpdateHandler2.java:534)
at
org.apache.solr.update.processor.RunUpdateProcessor.processDelete(RunUpdateProcessorFactory.java:78)
at
org.apache.solr.update.processor.UpdateRequestProcessor.processDelete(UpdateRequestProcessor.java:59)
at
org.apache.solr.update.processor.DistributedUpdateProcessor.doLocalDelete(DistributedUpdateProcessor.java:996)
at
org.apache.solr.update.processor.DistributedUpdateProcessor.versionDeleteByQuery(DistributedUpdateProcessor.java:1691)
at
org.apache.solr.update.processor.DistributedUpdateProcessor.doDeleteByQuery(DistributedUpdateProcessor.java:1595)
at
org.apache.solr.update.processor.DistributedUpdateProcessor.processDelete(DistributedUpdateProcessor.java:1404)
at
org.apache.solr.update.processor.LogUpdateProcessorFactory$LogUpdateProcessor.processDelete(LogUpdateProcessorFactory.java:124)
at
org.apache.solr.update.processor.UpdateRequestProcessor.processDelete(UpdateRequestProcessor.java:59)
at
org.apache.solr.update.processor.UpdateRequestProcessor.processDelete(UpdateRequestProcessor.java:59)
at
org.apache.solr.handler.loader.XMLLoader.processDelete(XMLLoader.java:366)
at
org.apache.solr.handler.loader.XMLLoader.processUpdate(XMLLoader.java:292)
at org.apache.solr.handler.loader.XMLLoader.load(XMLLoader.java:188)
at
org.apache.solr.handler.UpdateRequestHandler$1.load(UpdateRequestHandler.java:97)
at
org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:68)
... 33 more
2017-11-22 22:00:20.803 ERROR (qtp466002798-19) [
x:digital_bodleian_production] o.a.s.s.HttpSolrCall
null:org.apache.lucene.store.AlreadyClosedException: this IndexWriter is closed
at org.apache.lucene.index.IndexWriter.ensureOpen(IndexWriter.java:896)
at org.apache.lucene.index.IndexWriter.ensureOpen(IndexWriter.java:910)
at org.apache.lucene.index.IndexWriter.commit(IndexWriter.java:3377)
at
org.apache.solr.update.DirectUpdateHandler2.commit(DirectUpdateHandler2.java:679)
at
org.apache.solr.update.processor.RunUpdateProcessor.processCommit(RunUpdateProcessorFactory.java:93)
at
org.apache.solr.update.processor.UpdateRequestProcessor.processCommit(UpdateRequestProcessor.java:68)
at
org.apache.solr.update.processor.DistributedUpdateProcessor.doLocalCommit(DistributedUpdateProcessor.java:1950)
at
org.apache.solr.update.processor.DistributedUpdateProcessor.processCommit(DistributedUpdateProcessor.java:1926)
at
org.apache.solr.update.processor.LogUpdateProcessorFactory$LogUpdateProcessor.processCommit(LogUpdateProcessorFactory.java:160)
at
org.apache.solr.update.processor.UpdateRequestProcessor.processCommit(UpdateRequestProcessor.java:68)
at
org.apache.solr.update.processor.UpdateRequestProcessor.processCommit(UpdateRequestProcessor.java:68)
at
org.apache.solr.handler.RequestHandlerUtils.handleCommit(RequestHandlerUtils.java:69)
at
org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:72)
at
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:177)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:2484)
at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:720)
at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:526)
at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:382)
at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:326)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1751)
at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
at
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)
at
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512)
at
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)
at
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:119)
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
at
org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
at org.eclipse.jetty.server.Server.handle(Server.java:534)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320)
at
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
at
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:108)
at
org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
at
org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
at
org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
at
org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
at
org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassCastException: org.apache.lucene.search.IndexSearcher
cannot be cast to org.apache.solr.search.SolrIndexSearcher
at
org.apache.solr.search.JoinQuery.createWeight(JoinQParserPlugin.java:169)
at
org.apache.lucene.search.IndexSearcher.createWeight(IndexSearcher.java:734)
at org.apache.lucene.search.BooleanWeight.<init>(BooleanWeight.java:54)
at
org.apache.lucene.search.BooleanQuery.createWeight(BooleanQuery.java:204)
at
org.apache.solr.update.DeleteByQueryWrapper.createWeight(DeleteByQueryWrapper.java:72)
at
org.apache.lucene.search.IndexSearcher.createWeight(IndexSearcher.java:734)
at
org.apache.lucene.search.IndexSearcher.createNormalizedWeight(IndexSearcher.java:724)
at
org.apache.lucene.index.FrozenBufferedUpdates.applyQueryDeletes(FrozenBufferedUpdates.java:687)
at
org.apache.lucene.index.FrozenBufferedUpdates.apply(FrozenBufferedUpdates.java:443)
at
org.apache.lucene.index.FrozenBufferedUpdates.apply(FrozenBufferedUpdates.java:324)
at
org.apache.lucene.index.DocumentsWriter$ResolveUpdatesEvent.process(DocumentsWriter.java:723)
at
org.apache.lucene.index.IndexWriter.processEvents(IndexWriter.java:5057)
at
org.apache.lucene.index.IndexWriter.processEvents(IndexWriter.java:5045)
at org.apache.lucene.index.IndexWriter.getReader(IndexWriter.java:466)
at
org.apache.lucene.index.StandardDirectoryReader.doOpenFromWriter(StandardDirectoryReader.java:293)
at
org.apache.lucene.index.StandardDirectoryReader.doOpenIfChanged(StandardDirectoryReader.java:278)
at
org.apache.lucene.index.DirectoryReader.openIfChanged(DirectoryReader.java:235)
at org.apache.solr.core.SolrCore.openNewSearcher(SolrCore.java:1987)
at
org.apache.solr.update.UpdateLog.openRealtimeSearcher(UpdateLog.java:648)
at org.apache.solr.update.UpdateLog.deleteByQuery(UpdateLog.java:629)
at
org.apache.solr.update.DirectUpdateHandler2.deleteByQuery(DirectUpdateHandler2.java:534)
at
org.apache.solr.update.processor.RunUpdateProcessor.processDelete(RunUpdateProcessorFactory.java:78)
at
org.apache.solr.update.processor.UpdateRequestProcessor.processDelete(UpdateRequestProcessor.java:59)
at
org.apache.solr.update.processor.DistributedUpdateProcessor.doLocalDelete(DistributedUpdateProcessor.java:996)
at
org.apache.solr.update.processor.DistributedUpdateProcessor.versionDeleteByQuery(DistributedUpdateProcessor.java:1691)
at
org.apache.solr.update.processor.DistributedUpdateProcessor.doDeleteByQuery(DistributedUpdateProcessor.java:1595)
at
org.apache.solr.update.processor.DistributedUpdateProcessor.processDelete(DistributedUpdateProcessor.java:1404)
at
org.apache.solr.update.processor.LogUpdateProcessorFactory$LogUpdateProcessor.processDelete(LogUpdateProcessorFactory.java:124)
at
org.apache.solr.update.processor.UpdateRequestProcessor.processDelete(UpdateRequestProcessor.java:59)
at
org.apache.solr.update.processor.UpdateRequestProcessor.processDelete(UpdateRequestProcessor.java:59)
at
org.apache.solr.handler.loader.XMLLoader.processDelete(XMLLoader.java:366)
at
org.apache.solr.handler.loader.XMLLoader.processUpdate(XMLLoader.java:292)
at org.apache.solr.handler.loader.XMLLoader.load(XMLLoader.java:188)
at
org.apache.solr.handler.UpdateRequestHandler$1.load(UpdateRequestHandler.java:97)
at
org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:68)
... 33 more
{code}
> Using query time Join in deleteByQuery throws ClassCastException
> ----------------------------------------------------------------
>
> Key: SOLR-6357
> URL: https://issues.apache.org/jira/browse/SOLR-6357
> Project: Solr
> Issue Type: Bug
> Components: query parsers
> Affects Versions: 4.9
> Reporter: Arcadius Ahouansou
> Assignee: Mikhail Khludnev
> Fix For: 7.0
>
> Attachments: SOLR-6357.patch
>
>
> Consider the following input document where we have:
> - 1 Samsung mobile phone and
> - 2 manufactures: Apple and Samsung.
> {code}
> [
> {
> "id":"galaxy note ii",
> "cat":"product",
> "manu_s":"samsung"
> },
> {
> "id":"samsung",
> "cat":"manufacturer",
> "name":"Samsung Electronics"
> },
> {
> "id":"apple",
> "cat":"manufacturer",
> "name":"Apple Inc"
> }
> ]
> {code}
> My objective is to delete from the default index all manufacturers not having
> any product in the index.
> After indexing ( curl 'http://localhost:8983/solr/update?commit=true' -H
> "Content-Type: text/json" --data-binary @delete-by-join-query.json )
> I went to
> {code}http://localhost:8983/solr/select?q=cat:manufacturer -{!join
> from=manu_s to=id}cat:product
> {code}
> and I could see only Apple, the only manufacturer not having any product in
> the index.
> However, when I use that same query for deletion:
> {code}
> http://localhost:8983/solr/update?commit=true&stream.body=<delete><query>cat:manufacturer
> -{!join from=manu_s to=id}cat:product</query></delete>
> {code}
> I get
> {code}
> java.lang.ClassCastException: org.apache.lucene.search.IndexSearcher cannot
> be cast to org.apache.solr.search.SolrIndexSearcher
> at
> org.apache.solr.search.JoinQuery.createWeight(JoinQParserPlugin.java:143)
> at
> org.apache.lucene.search.BooleanQuery$BooleanWeight.<init>(BooleanQuery.java:185)
> at
> org.apache.lucene.search.BooleanQuery.createWeight(BooleanQuery.java:526)
> at
> org.apache.lucene.search.BooleanQuery$BooleanWeight.<init>(BooleanQuery.java:185)
> at
> org.apache.lucene.search.BooleanQuery.createWeight(BooleanQuery.java:526)
> at
> org.apache.lucene.search.IndexSearcher.createNormalizedWeight(IndexSearcher.java:684)
> at
> org.apache.lucene.search.QueryWrapperFilter.getDocIdSet(QueryWrapperFilter.java:55)
> at
> org.apache.lucene.index.BufferedUpdatesStream.applyQueryDeletes(BufferedUpdatesStream.java:552)
> at
> org.apache.lucene.index.BufferedUpdatesStream.applyDeletesAndUpdates(BufferedUpdatesStream.java:287)
> at
> {code}
> This seems to be a bug.
> Looking at the source code, the exception is happening in {code}
> @Override
> public Weight createWeight(IndexSearcher searcher) throws IOException {
> return new JoinQueryWeight((SolrIndexSearcher)searcher);
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]