[
https://issues.apache.org/jira/browse/LUCENE-7883?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Uwe Schindler updated LUCENE-7883:
----------------------------------
Attachment: LUCENE-7883.patch
Patch removing context classloader usage. Tests seem to pass, unfortunately
Solr trunk is very unstable. Some unrelated tests also fail on Jenkins, so I
cannot be sure all is fine.
This patch also adds context class loaders on te forbidden api list. Because of
that I used the {{withContextClassLoader(ClassLoader, () -> \{ ... \})}} lambda
method.
> Remove references to Thread#getContextClassLoader() from Lucene/Solr codebase
> -----------------------------------------------------------------------------
>
> Key: LUCENE-7883
> URL: https://issues.apache.org/jira/browse/LUCENE-7883
> Project: Lucene - Core
> Issue Type: Improvement
> Reporter: Uwe Schindler
> Assignee: Uwe Schindler
> Priority: Critical
> Fix For: master (7.0)
>
> Attachments: LUCENE-7883.patch
>
>
> As discussed in LUCENE-7873, the use of
> {{Thread.currentThread().getContextClassLoader()}} is in most cases a bug
> caused by sloppy usage of ClassLoader APIs and should be replaced by
> {{getClass().getClassLoader()}}.
> In Lucene we only have the ClassPathResourceLoader, but this one can be
> solved by removing the "default" constructor. It only affects CustomAnalyzer,
> that should also be extended in Lucene 7.
> The uses in Solr and its test are all to be replaced by
> {{getClass().getClassLoader()}} (except some workaround with clustering using
> a try-finally). This is in most cases historical code, when Solr was a web
> application to workaround some buggy webapp containers. In the current state,
> the code is "just wrong".
> Finally, we should add {{java.lang.Thread#getContextClassLoader()}} to
> forbidden-apis.
> I'd like to get this into Lucene 7, as it affects some APIs in Lucene.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]