[ 
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

Reply via email to