Uploaded image for project: 'OFBiz'
  1. OFBiz
  2. OFBIZ-2186

OutOfMemory provoked by Cache overflow

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Critical
    • Resolution: Fixed
    • Release Branch 4.0, Trunk
    • Release Branch 09.04, Trunk
    • framework
    • None
    • Linux, JDK 1.5_15, Xmx set to 1156Mo

    Description

      In our production system, we had an OutOfMemoryError.
      I analyzed the generated Heap Dump and found the following:
      The cache entitycache.entity-list.default.ProductCategoryMember retains a heap of 369314128 Bytes.
      The LRUMap hold by this object is occupying this space (369314128) and this object has a stange state:

      • maxSize is set to 5000 (as set in the cache.properties)
      • size is 128930 => PROBLEM

      IN cache.properties:
      entitycache.entity-list.default.ProductCategoryMember.expireTime=3600000
      entitycache.entity-list.default.ProductCategoryMember.useSoftReference=true
      entitycache.entity-list.default.ProductCategoryMember.maxInMemory=5000
      entitycache.entity-list.default.ProductCategoryMember.maxSize=7500

      I analyzed the code of LRUMap and its usage in CacheLineTable and IMHO the bug is a missing synchonized in get():
      public CacheLine<V> get(Object key) {
      if (key == null)

      { if (Debug.verboseOn()) Debug.logVerbose("In CacheLineTable tried to get with null key, using NullObject" + this.cacheName, module); }

      return getNoCheck(key);
      }

      Since LRUMap extends LinkedHashMap, if you look at get method, it changes the state of the Map by calling e.recordAccess(this):
      public V get(Object key)

      { Entry<K,V> e = (Entry<K,V>)getEntry(key); if (e == null) return null; e.recordAccess(this); return e.value; }

      So the default of synchronization corrupts the state of LRUMap which grows indefinitely
      I will submit a patch for this on the trunk.
      Philippe
      www.ubik-ingenierie.com

      Attachments

        1. CacheLineTable-patch.txt
          0.6 kB
          Philippe Mouawad
        2. OfbizBug.zip
          241 kB
          Philippe Mouawad

        Issue Links

          Activity

            People

              jleroux Jacques Le Roux
              p.mouawad@ubik-ingenierie.com Philippe Mouawad
              Votes:
              4 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: