[ https://issues.apache.org/jira/browse/SOLR-14768?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17185070#comment-17185070 ]
Joe Doupnik edited comment on SOLR-14768 at 8/26/20, 10:09 AM: --------------------------------------------------------------- After some review of the source code of Solr 8.6.1, file SolrRequestParsers.java, and then asking Google about MultiParts, one finds that the function cleanupMultipartFiles (which is the locus of the present error) is coupled to functions (MultiPartInputStream etc) which are depreciated and even parts actively blocked. Also such a cleanup process itself is vulnerable to side effects ([https://github.com/eclipse/jetty.project/issues/4383). |https://github.com/eclipse/jetty.project/issues/4383).**]and ([https://github.com/eclipse/jetty.project/issues/4350|https://github.com/eclipse/jetty]) . These are from Nov 2019. A comment in the first reference is useful to note: "A simple fix was added in 9.4.26 to avoid the NPE ([#4479|https://github.com/eclipse/jetty.project/pull/4479]). A more substantial fix using synchronization has been merged to jetty-10.0.x ([#4498|https://github.com/eclipse/jetty.project/pull/4498]) which also ensures the parts are always cleaned up properly when parsing the multipart form asynchronously." The second reference, 4350, is has topic title of "Depreciated MultiPartInputStreamParser still used in jetty-server (MultiPartsUtilParser) but OSGi ExportPackage suppressed." Thus the present functions need to be replaced, and perhaps they are with jetty 10. In any case, the material is broken in Solr 8.6.x, and any fixes need adequate testing. Thanks, Joe D. was (Author: jdoupnik): After some review of the source code of Solr 8.6.1, file SolrRequestParsers.java, and then asking Google about MultiParts, one finds that the function cleanupMultipartFiles (which is the locus of the present error) is coupled to functions (MultiPartInputStream etc) which are depreciated and even parts actively blocked. Also such a cleanup process itself is vulnerable to side effects ([https://github.com/eclipse/jetty.project/issues/4383).**] A comment in that reference is useful to note: "A simple fix was added in 9.4.26 to avoid the NPE ([#4479|https://github.com/eclipse/jetty.project/pull/4479]). A more substantial fix using synchronization has been merged to jetty-10.0.x ([#4498|https://github.com/eclipse/jetty.project/pull/4498]) which also ensures the parts are always cleaned up properly when parsing the multipart form asynchronously." Thus the present functions need to be replaced, and perhaps they are with jetty 10. In any case, the material is broken in Solr 8.6.x, and any fixes need adequate testing. Thanks, Joe D. > Error 500 on PDF extraction: java.lang.NoClassDefFoundError: > org/eclipse/jetty/server/MultiParts > ------------------------------------------------------------------------------------------------ > > Key: SOLR-14768 > URL: https://issues.apache.org/jira/browse/SOLR-14768 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Components: contrib - Solr Cell (Tika extraction) > Affects Versions: 8.6, 8.6.1 > Reporter: Markus Kalkbrenner > Priority: Major > Attachments: Solr v8.6.x fails with multipart MIME in commands.eml > > > See [https://www.mail-archive.com/solr-user@lucene.apache.org/msg152182.html] > The integration tests of the solarium PHP library and the integration tests > of the Search API Solr Drupal module both fail on PDF extraction if executed > on Solr 8.6. > They still work on Solr 8.5.1 an earlier versions. > {quote}2020-08-20 12:30:35.279 INFO (qtp855700733-19) [ x:5f3e6ce2810ef] > o.a.s.u.p.LogUpdateProcessorFactory [5f3e6ce2810ef] webapp=/solr > path=/update/extract > params=\{json.nl=flat&commitWithin=0&omitHeader=false&resource.name=testpdf.pdf&literal.id=extract-test&commit=true&extractOnly=false&uprefix=attr_&wt=json}{add=[extract-test > (1675547519474466816)],commit=} 0 957 > solr8_1 | 2020-08-20 12:30:35.280 WARN (qtp855700733-19) [ ] > o.e.j.s.HttpChannel /solr/5f3e6ce2810ef/update/extract => > java.lang.NoClassDefFoundError: org/eclipse/jetty/server/MultiParts > solr8_1 | at > org.apache.solr.servlet.SolrRequestParsers.cleanupMultipartFiles(SolrRequestParsers.java:624) > solr8_1 | java.lang.NoClassDefFoundError: org/eclipse/jetty/server/MultiParts > solr8_1 | at > org.apache.solr.servlet.SolrRequestParsers.cleanupMultipartFiles(SolrRequestParsers.java:624) > ~[?:?] > solr8_1 | at > org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:443) > ~[?:?] > solr8_1 | at > org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:345) > ~[?:?] > solr8_1 | at > org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1596) > ~[jetty-servlet-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:545) > ~[jetty-servlet-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) > ~[jetty-server-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:590) > ~[jetty-security-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) > ~[jetty-server-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) > ~[jetty-server-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1610) > ~[jetty-server-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) > ~[jetty-server-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1300) > ~[jetty-server-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) > ~[jetty-server-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:485) > ~[jetty-servlet-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1580) > ~[jetty-server-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) > ~[jetty-server-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1215) > ~[jetty-server-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) > ~[jetty-server-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:221) > ~[jetty-server-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.server.handler.InetAccessHandler.handle(InetAccessHandler.java:177) > ~[jetty-server-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146) > ~[jetty-server-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) > ~[jetty-server-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:322) > ~[jetty-rewrite-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) > ~[jetty-server-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at org.eclipse.jetty.server.Server.handle(Server.java:500) > ~[jetty-server-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383) > ~[jetty-server-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:547) > ~[jetty-server-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375) > ~[jetty-server-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273) > ~[jetty-server-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) > ~[jetty-io-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) > ~[jetty-io-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) > ~[jetty-io-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) > ~[jetty-util-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) > ~[jetty-util-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) > ~[jetty-util-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) > ~[jetty-util-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375) > ~[jetty-util-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806) > ~[jetty-util-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at > org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938) > ~[jetty-util-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at java.lang.Thread.run(Unknown Source) [?:?] > solr8_1 | Caused by: java.lang.ClassNotFoundException: > org.eclipse.jetty.server.MultiParts > solr8_1 | at > org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:565) > ~[jetty-webapp-9.4.27.v20200227.jar:9.4.27.v20200227] > solr8_1 | at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?] > solr8_1 | ... 40 more > {quote} -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org