Uploaded image for project: 'Blazegraph (by SYSTAP)'
  1. Blazegraph (by SYSTAP)
  2. BLZG-209

NPE observed in the com.bigdata.btree package when LRUNexus is enabled.

    Details

    • Type: Bug
    • Status: Done
    • Resolution: Done
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None

      Description

      An NPE has been reported in the btree package when the LRUNexus is enabled.

        Activity

        Hide
        bryanthompson bryanthompson added a comment -

        This issue has been tracked down to a failure to hold a lock in the HardReferenceGlobalLRU when testing the cache for an entry under a key. When there is a cache hit, it is possible for any cache entry need the end of the LRU chain to be concurrently 'recycled' and the value associated with the key in the entry replaced before the entry was returned to the caller.

        Two variants of the HardReferenceGlobalLRU have been created: a "recycler" version, which recycles the LRU Entry but holds the lock across get(key) and a non-recycler version. The non-recycler version has higher throughput since it does not need to hold the lock in get(key). The recycler version is currently enabled by default, but we plan to enable the non-recycler version once we can verify that it does not cause GC problems on the clustered database.

        Show
        bryanthompson bryanthompson added a comment - This issue has been tracked down to a failure to hold a lock in the HardReferenceGlobalLRU when testing the cache for an entry under a key. When there is a cache hit, it is possible for any cache entry need the end of the LRU chain to be concurrently 'recycled ' and the value associated with the key in the entry replaced before the entry was returned to the caller. Two variants of the HardReferenceGlobalLRU have been created: a "recycler" version, which recycles the LRU Entry but holds the lock across get(key) and a non-recycler version. The non-recycler version has higher throughput since it does not need to hold the lock in get(key). The recycler version is currently enabled by default, but we plan to enable the non-recycler version once we can verify that it does not cause GC problems on the clustered database.
        Hide
        bryanthompson bryanthompson added a comment -

        This issue is fixed by the HardReferenceGlobalLRURecycler, which is the default LRUNexus cache implementation.

        Show
        bryanthompson bryanthompson added a comment - This issue is fixed by the HardReferenceGlobalLRURecycler, which is the default LRUNexus cache implementation.

          People

          • Assignee:
            Unassigned
            Reporter:
            bryanthompson bryanthompson
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: