Scott Patterson created JENA-597: ------------------------------------ Summary: IRIResolverNormal needs thread safe CacheLRU Key: JENA-597 URL: https://issues.apache.org/jira/browse/JENA-597 Project: Apache Jena Issue Type: Bug Components: ARQ Affects Versions: Jena 2.10.1 Environment: Any IBM JRE 6 or higher Reporter: Scott Patterson Assignee: Andy Seaborne Fix For: Jena 2.11.0
The following exception may occur on an IBM JRE 6 or higher when more than one thread requires access to the org.apache.jena.atlas.lib.cache.CacheLRU embedded in IRIResolverNormal: Caused by: java.lang.NullPointerException at java.util.LinkedHashMap.get(LinkedHashMap.java:337) at org.apache.jena.atlas.lib.cache.CacheLRU.get(CacheLRU.java:53) at org.apache.jena.riot.system.IRIResolver$IRIResolverNormal.resolveSilent(IRIResolver.java:403) at org.apache.jena.riot.system.IRIResolver$IRIResolverNormal.<init>(IRIResolver.java:359) at org.apache.jena.riot.system.IRIResolver.create(IRIResolver.java:212) at org.apache.jena.riot.system.RiotLib.profile(RiotLib.java:141) at org.apache.jena.riot.system.RiotLib.profile(RiotLib.java:130) at org.apache.jena.riot.system.RiotLib.profile(RiotLib.java:117) at org.apache.jena.riot.RiotReader.createParserTurtle(RiotReader.java:310) at org.apache.jena.riot.RiotReader.createParser(RiotReader.java:142) at org.apache.jena.riot.RiotReader.createParser(RiotReader.java:133) at org.apache.jena.riot.RDFParserRegistry$ReaderRIOTFactoryImpl$1.read(RDFParserRegistry.java:141) at org.apache.jena.riot.RDFDataMgr.process(RDFDataMgr.java:760) at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:258) at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:244) ... 20 more The problem seems to only occurs on IBM JRE 6 or higher as its implementation of LinkedHashMap is not thread safe. Note that the JDK specification does not required LinkedHashMap to be thread safe. The solution is to make use of CacheFactory.createSync when creating the Cache in the IRIResolverNormal. Patch attached -- This message was sent by Atlassian JIRA (v6.1#6144)