Details
-
Bug
-
Resolution: Fixed
-
Major
-
6.4-rc-1
-
Unknown
-
N/A
-
N/A
-
Description
Tika default configuration initialization is loading classes from String each time we create an instance of Tika class and at least in Tomcat WebappClassLoader.loadClass deal with thread safety using a lock which mean everything which load a class is stuck waiting for something that happen several times on each page containing attachments.
Example of a BLOCKED thread in myxwiki.org:
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1603) - waiting to lock <0x00000007800df9c8> (a org.apache.catalina.loader.WebappClassLoader) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569) at org.apache.tika.config.ServiceLoader.loadStaticServiceProviders(ServiceLoader.java:310) at org.apache.tika.parser.DefaultParser.getDefaultParsers(DefaultParser.java:50) at org.apache.tika.parser.DefaultParser.<init>(DefaultParser.java:73) at org.apache.tika.config.TikaConfig.getDefaultParser(TikaConfig.java:72) at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:178) at org.apache.tika.config.TikaConfig.getDefaultConfig(TikaConfig.java:287) at org.apache.tika.Tika.<init>(Tika.java:115) at com.xpn.xwiki.doc.XWikiAttachment.getMimeType(XWikiAttachment.java:746)