[
https://issues.apache.org/jira/browse/SOLR-14268?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Eric Pugh resolved SOLR-14268.
------------------------------
Resolution: Cannot Reproduce
Thanks [~igiguere] for validating that this bug is not reproducible.
Resolving it.
> Re-creating deleted Managed Stopwords lists results in error
> ------------------------------------------------------------
>
> Key: SOLR-14268
> URL: https://issues.apache.org/jira/browse/SOLR-14268
> Project: Solr
> Issue Type: Bug
> Components: Schema and Analysis
> Affects Versions: 6.6.6, 7.7.2, 8.4.1
> Reporter: Thomas Corthals
> Priority: Major
> Labels: ManagedStopwordFilterFactory, REST, Solr
>
> Creating a Managed Stopwords list that has the same name as a previously
> deleted list results in an error if the core has been reloaded after deleting
> the list. Going through the same flow with Managed Synonyms doesn't result in
> this unexpected behaviour.
> On a newly started standalone Solr with the techproducts core:
> {code:bash}
> curl -X PUT -H 'Content-type:application/json' --data-binary \
> '{"class":"org.apache.solr.rest.schema.analysis.ManagedWordSetResource"}' \
> http://localhost:8983/solr/techproducts/schema/analysis/stopwords/testlist
> curl -X DELETE
> http://localhost:8983/solr/techproducts/schema/analysis/stopwords/testlist
> curl http://localhost:8983/solr/admin/cores?action=RELOAD\&core=techproducts
> curl -X PUT -H 'Content-type:application/json' --data-binary \
> '{"class":"org.apache.solr.rest.schema.analysis.ManagedWordSetResource"}' \
> http://localhost:8983/solr/techproducts/schema/analysis/stopwords/testlist
> {code}
> The second PUT request results in a status 500 with error msg
> "java.util.LinkedHashMap cannot be cast to java.util.List".
> {code:json}
> {
> "responseHeader":{
> "status":500,
> "QTime":2},
> "error":{
> "msg":"java.util.LinkedHashMap cannot be cast to java.util.List",
> "trace":"java.lang.ClassCastException: java.util.LinkedHashMap cannot be
> cast to java.util.List\r\n\tat
> org.apache.solr.rest.schema.analysis.ManagedWordSetResource.applyUpdatesToManagedData(ManagedWordSetResource.java:163)\r\n\tat
> org.apache.solr.rest.ManagedResource.doPut(ManagedResource.java:395)\r\n\tat
> org.apache.solr.rest.RestManager$ManagedEndpoint.put(RestManager.java:343)\r\n\tat
>
> org.restlet.resource.ServerResource.doHandle(ServerResource.java:447)\r\n\tat
> org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java:359)\r\n\tat
> org.restlet.resource.ServerResource.handle(ServerResource.java:1044)\r\n\tat
> org.restlet.resource.Finder.handle(Finder.java:236)\r\n\tat
> org.restlet.routing.Filter.doHandle(Filter.java:150)\r\n\tat
> org.restlet.routing.Filter.handle(Filter.java:197)\r\n\tat
> org.restlet.routing.Router.doHandle(Router.java:422)\r\n\tat
> org.restlet.routing.Router.handle(Router.java:639)\r\n\tat
> org.restlet.routing.Filter.doHandle(Filter.java:150)\r\n\tat
> org.restlet.routing.Filter.handle(Filter.java:197)\r\n\tat
> org.restlet.routing.Filter.doHandle(Filter.java:150)\r\n\tat
> org.restlet.routing.Filter.handle(Filter.java:197)\r\n\tat
> org.restlet.routing.Filter.doHandle(Filter.java:150)\r\n\tat
> org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:140)\r\n\tat
> org.restlet.routing.Filter.handle(Filter.java:197)\r\n\tat
> org.restlet.routing.Filter.doHandle(Filter.java:150)\r\n\tat
> org.restlet.routing.Filter.handle(Filter.java:197)\r\n\tat
> org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:202)\r\n\tat
> org.restlet.engine.application.ApplicationHelper.handle(ApplicationHelper.java:75)\r\n\tat
> org.restlet.Application.handle(Application.java:385)\r\n\tat
> org.restlet.routing.Filter.doHandle(Filter.java:150)\r\n\tat
> org.restlet.routing.Filter.handle(Filter.java:197)\r\n\tat
> org.restlet.routing.Router.doHandle(Router.java:422)\r\n\tat
> org.restlet.routing.Router.handle(Router.java:639)\r\n\tat
> org.restlet.routing.Filter.doHandle(Filter.java:150)\r\n\tat
> org.restlet.routing.Filter.handle(Filter.java:197)\r\n\tat
> org.restlet.routing.Router.doHandle(Router.java:422)\r\n\tat
> org.restlet.routing.Router.handle(Router.java:639)\r\n\tat
> org.restlet.routing.Filter.doHandle(Filter.java:150)\r\n\tat
> org.restlet.routing.Filter.handle(Filter.java:197)\r\n\tat
> org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:202)\r\n\tat
> org.restlet.Component.handle(Component.java:408)\r\n\tat
> org.restlet.Server.handle(Server.java:507)\r\n\tat
> org.restlet.engine.connector.ServerHelper.handle(ServerHelper.java:63)\r\n\tat
>
> org.restlet.engine.adapter.HttpServerHelper.handle(HttpServerHelper.java:143)\r\n\tat
>
> org.restlet.ext.servlet.ServerServlet.service(ServerServlet.java:1117)\r\n\tat
> javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\r\n\tat
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:876)\r\n\tat
>
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:542)\r\n\tat
>
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)\r\n\tat
>
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:566)\r\n\tat
>
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\r\n\tat
>
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)\r\n\tat
>
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1711)\r\n\tat
>
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)\r\n\tat
>
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1347)\r\n\tat
>
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)\r\n\tat
>
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)\r\n\tat
>
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1678)\r\n\tat
>
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)\r\n\tat
>
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1249)\r\n\tat
>
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)\r\n\tat
> org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:227)\r\n\tat
> org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:78)\r\n\tat
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:428)\r\n\tat
>
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:351)\r\n\tat
>
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)\r\n\tat
>
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)\r\n\tat
>
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)\r\n\tat
>
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)\r\n\tat
>
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\r\n\tat
>
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)\r\n\tat
>
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1711)\r\n\tat
>
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)\r\n\tat
>
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1347)\r\n\tat
>
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)\r\n\tat
>
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)\r\n\tat
>
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1678)\r\n\tat
>
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)\r\n\tat
>
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1249)\r\n\tat
>
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)\r\n\tat
>
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)\r\n\tat
>
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:152)\r\n\tat
>
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\r\n\tat
>
> org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)\r\n\tat
>
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\r\n\tat
> org.eclipse.jetty.server.Server.handle(Server.java:505)\r\n\tat
> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)\r\n\tat
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)\r\n\tat
>
> org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)\r\n\tat
> org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)\r\n\tat
> org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)\r\n\tat
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)\r\n\tat
>
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)\r\n\tat
>
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)\r\n\tat
>
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)\r\n\tat
>
> org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)\r\n\tat
>
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:781)\r\n\tat
>
> org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:917)\r\n\tat
> java.lang.Thread.run(Unknown Source)\r\n",
> "code":500}}
> {code}
> Similar requests for synonyms work fine, no matter how many times I repeat
> the CREATE/DELETE/RELOAD cycle:
> {code:bash}
> curl -X PUT -H 'Content-type:application/json' --data-binary \
> '{"class":"org.apache.solr.rest.schema.analysis.ManagedSynonymGraphFilterFactory$SynonymManager"}'
> \
> http://localhost:8983/solr/techproducts/schema/analysis/synonyms/testmap
> curl -X DELETE
> http://localhost:8983/solr/techproducts/schema/analysis/synonyms/testmap
> curl http://localhost:8983/solr/admin/cores?action=RELOAD\&core=techproducts
> curl -X PUT -H 'Content-type:application/json' --data-binary \
> '{"class":"org.apache.solr.rest.schema.analysis.ManagedSynonymGraphFilterFactory$SynonymManager"}'
> \
> http://localhost:8983/solr/techproducts/schema/analysis/synonyms/testmap
> {code}
> Reloading after creating the Stopwords list but not after deleting it works
> without error too on a fresh techproducts core (you'll have to remove the
> directory from disk and create the core again after running the previous
> commands).
> {code:bash}
> curl -X PUT -H 'Content-type:application/json' --data-binary \
> '{"class":"org.apache.solr.rest.schema.analysis.ManagedWordSetResource"}' \
> http://localhost:8983/solr/techproducts/schema/analysis/stopwords/testlist
> curl http://localhost:8983/solr/admin/cores?action=RELOAD\&core=techproducts
> curl -X DELETE
> http://localhost:8983/solr/techproducts/schema/analysis/stopwords/testlist
> curl -X PUT -H 'Content-type:application/json' --data-binary \
> '{"class":"org.apache.solr.rest.schema.analysis.ManagedWordSetResource"}' \
> http://localhost:8983/solr/techproducts/schema/analysis/stopwords/testlist
> {code}
> And even curiouser, when doing a CREATE/DELETE for Stopwords, then a
> CREATE/DELETE for Synonyms, and only then a RELOAD of the core, the cycle can
> be completed twice. (Again, on a freshly created techproducts core.) Only the
> third attempt to create a list results in an error. Synonyms can still be
> created and deleted repeatedly after this.
> {code:bash}
> curl -X PUT -H 'Content-type:application/json' --data-binary \
> '{"class":"org.apache.solr.rest.schema.analysis.ManagedWordSetResource"}' \
> http://localhost:8983/solr/techproducts/schema/analysis/stopwords/testlist
> curl -X DELETE
> http://localhost:8983/solr/techproducts/schema/analysis/stopwords/testlist
> curl -X PUT -H 'Content-type:application/json' --data-binary \
> '{"class":"org.apache.solr.rest.schema.analysis.ManagedSynonymGraphFilterFactory$SynonymManager"}'
> \
> http://localhost:8983/solr/techproducts/schema/analysis/synonyms/testmap
> curl -X DELETE
> http://localhost:8983/solr/techproducts/schema/analysis/synonyms/testmap
> curl http://localhost:8983/solr/admin/cores?action=RELOAD\&core=techproducts
> curl -X PUT -H 'Content-type:application/json' --data-binary \
> '{"class":"org.apache.solr.rest.schema.analysis.ManagedWordSetResource"}' \
> http://localhost:8983/solr/techproducts/schema/analysis/stopwords/testlist
> curl -X DELETE
> http://localhost:8983/solr/techproducts/schema/analysis/stopwords/testlist
> curl -X PUT -H 'Content-type:application/json' --data-binary \
> '{"class":"org.apache.solr.rest.schema.analysis.ManagedSynonymGraphFilterFactory$SynonymManager"}'
> \
> http://localhost:8983/solr/techproducts/schema/analysis/synonyms/testmap
> curl -X DELETE
> http://localhost:8983/solr/techproducts/schema/analysis/synonyms/testmap
> curl http://localhost:8983/solr/admin/cores?action=RELOAD\&core=techproducts
> curl -X PUT -H 'Content-type:application/json' --data-binary \
> '{"class":"org.apache.solr.rest.schema.analysis.ManagedWordSetResource"}' \
> http://localhost:8983/solr/techproducts/schema/analysis/stopwords/testlist
> {code}
> The same successes/errors occur when running each cycle against a different
> core if the cores share the same configset.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]