You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jena.apache.org by "Simon Helsen (JIRA)" <ji...@apache.org> on 2013/06/05 21:00:20 UTC
[jira] [Created] (JENA-467) IRIResolverNormal should use
synchronized CacheLRU
Simon Helsen created JENA-467:
---------------------------------
Summary: IRIResolverNormal should use synchronized CacheLRU
Key: JENA-467
URL: https://issues.apache.org/jira/browse/JENA-467
Project: Apache Jena
Issue Type: Bug
Components: ARQ
Affects Versions: Jena 2.10.1
Environment: Any IBM JRE 6 or higher
Reporter: Simon Helsen
Priority: Critical
Attachments: patch.txt
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 is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira