[ 
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]

Reply via email to