Berkeley DB Java Edition 3.3.87 is a patch release consisting of fixes for a number of issues. We strongly recommend that users of the 3.3.x version upgrade to this release.
These fixes include:
[#17462] - Fix a bug that would allow the Total Memory Usage stat to become negative. This could prevent eviction from occurring, which could cause
[#17546] - EnvironmentConfig.COMPRESSOR_PURGE_ROOT has been deprecated. This parameter no longer has any effect. Compression of the root node has no benefit and this feature has been removed. This feature was also bug-prone, as reported by penemue on OTN. [#17590] - Fix a bug that could cause OutOfMemoryError when many records are read in a read-only environment, and the data set that is accessed does not fit in available memory. This applies to two types of applications: User applications that open the Environment with the read-only (EnvironmentConfig.setReadOnly(true)) property. The JE utilities that open the Environment read-only: DbVerify, DbStat, and DbDump if neither the -r nor -R switch is specified. Thanks to user8694068 for reporting this on OTN and working with us to diagnose the problem. The complete list of changes can also be found in the change log page. http://www.oracle.com/technology/documentation/berkeley-db/je/changeLog.html
OutOfMemoryErrorNullPointerException during eviction when an exception occurs during logging, for example, an IOException when the disk is full. The NullPointerException masked the original exception (e.g., IOException). We'd like to thank OTN Forum user tkram01 for reporting this on the BDB JE Forum. An example stack trace is below.
java.lang.NullPointerException
at com.sleepycat.je.tree.LN.log(LN.java:534)
at com.sleepycat.je.tree.LN.log(LN.java:373)
at com.sleepycat.je.tree.BIN.logDirtyLN(BIN.java:1016)
at com.sleepycat.je.tree.BIN.evictInternal(BIN.java:985)
at com.sleepycat.je.tree.BIN.evictLNs(BIN.java:940)
at com.sleepycat.je.evictor.Evictor.evictIN(Evictor.java:761)
at com.sleepycat.je.evictor.Evictor.evictBatch(Evictor.java:344)
at com.sleepycat.je.evictor.Evictor.doEvict(Evictor.java:244)
at com.sleepycat.je.evictor.Evictor.doCriticalEviction(Evictor.java:269)
at com.sleepycat.je.dbi.CursorImpl.close(CursorImpl.java:711)
at com.sleepycat.je.Cursor.close(Cursor.java:326)
at com.sleepycat.je.Database.putInternal(Database.java:999)
at com.sleepycat.je.Database.put(Database.java:885)
[#17546] - EnvironmentConfig.COMPRESSOR_PURGE_ROOT has been deprecated. This parameter no longer has any effect. Compression of the root node has no benefit and this feature has been removed. This feature was also bug-prone, as reported by penemue on OTN. [#17590] - Fix a bug that could cause OutOfMemoryError when many records are read in a read-only environment, and the data set that is accessed does not fit in available memory. This applies to two types of applications: User applications that open the Environment with the read-only (EnvironmentConfig.setReadOnly(true)) property. The JE utilities that open the Environment read-only: DbVerify, DbStat, and DbDump if neither the -r nor -R switch is specified. Thanks to user8694068 for reporting this on OTN and working with us to diagnose the problem. The complete list of changes can also be found in the change log page. http://www.oracle.com/technology/documentation/berkeley-db/je/changeLog.html
Comments (2)
Thanks for fixing this. One of our instances of Berkeley DB Java Edition was almost permanently busy with the Evictor which caused an extreme slowdown. After upgrading to the latest version and restarting, the problem was gone. Could the slowdown have been caused by the bug you described in the post?
Posted by Luzius Meisser | September 19, 2009 7:19 PM
Posted on September 19, 2009 19:19
Possibly. What release did you upgrade from?
Posted by charles.lamb
| September 19, 2009 7:39 PM
Posted on September 19, 2009 19:39