Uploaded image for project: 'Apache Jena'
  1. Apache Jena
  2. JENA-467

IRIResolverNormal should use synchronized CacheLRU

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • Jena 2.10.1
    • Jena 2.11.0
    • ARQ
    • None
    • Any IBM JRE 6 or higher

    Description

      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

      Attachments

        1. iriresolver-patch-2.txt
          0.7 kB
          Andy Seaborne
        2. iriresolver-patch.txt
          0.9 kB
          Andy Seaborne
        3. patch.txt
          0.8 kB
          Simon Helsen

        Issue Links

          Activity

            People

              andy Andy Seaborne
              shelsen Simon Helsen
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: