Berkeley DB Java Edition 1.5.3 Change Log

Changes since Release 1.5.1.

For additional details, please see the documentation and Release Notes included in your download package or on our website.

Log File On-Disk Format Changes:


New Features:


General Environment Changes:

  1. Fix a bug where eviction is eventually unable to make progress when there are large numbers of internal node splits. [#10395]

  2. Fix a bug where checkpoints occurred less frequently than the configured byte interval. [#10395]

  3. Fix a bug where the compressor thread was unnecessarily reading internal nodes and could become back logged. [#10395]

  4. Fix a bug where the evictor would cause writes to the log when the environment is opened read-only. [#10554]

  5. Fix a bug where databases on read-only media or in read-only directories would fail because of the use of the ".lck" file. FileManager now checks if the environment is a read-only dir/media and will assert that it is being opened read-only and open the environment without a ".lck" file. [#10632]

  6. Fix a bug where Tree.insert() would sporadically loop when DupCountLN had a count of -1. [#10665]

  7. Fix a bug that would cause eviction to not function correctly due to an inconsistency in the equals method on the Evictor.INGenerationComparator class. [#10693]

  8. Improved performance and reliability of DbStat and DbVerify on large databases. [#10697]

  9. Fix a bug where out of disk space conditions were not handled gracefully. [#10741]

  10. Fix a bug that caused an internal exception under certain conditions, when inserting a key that was previously deleted. [#10747]

  11. Change checkpoints to delete cleaned files, rather than waiting for the cleaner to finish. Cleaned files are deleted when more than five files have been cleaned at the time a checkpoint starts. The new property je.cleaner.minFilesToDelete can be used to override the default of five files. [#10756]

  12. Improve recovery performance for opening an existing environment for databases that do not support duplicates. [#10781]

  13. Improve compatibility between our custom serialization (StoredClassCatalog) and applications that use custom class loaders. [#10827]

API Changes:

  1. Change Transaction.getId() to be a public method. It can be useful when correlating transaction statistics to particular transactions. [#10657]

  2. Fix an inconsistency in exception handling. Previously, DeadlockException and LockNotGrantedException were independent exceptions. With this change, an application can chose whether to catch the more specific LockNotGrantedException, or simply handle it as generic deadlock. [#10672]

  3. Fix a bug where records larger than 5K were handled inefficiently during operations like environment open and log cleaning because the default read buffer size was too small. The default read buffer size is now 8K and will grow if larger records are encountered. Added methods EnvironmentStats.getNRepeatIteratorReads() and EnvironmentStats.getNRepeatFaultReads() and a property, je.log.iteratorMaxSize that can be used to fine tune the efficiency of the read buffer. [#10749]

  4. BtreeStats is now returned by Database.getStats. BtreeStats extends DatabaseStats and all statistics have been moved to BtreeStats. This change was made for compatibility with the DB core product and to allow for access methods other than Btree in the future. In addition, the data type of several statistics was changed from int to long to accommodate large databases. [#10749]

Utility Changes:

  1. The DbDump format was changed for compatibility with the DB core product. The boolean values are now printed as 1/0 instead of true/false and the database name is no longer output. The old (incorrect) format is still supported by the JE DbLoad. [#10861]

Configuration, Documentation, and Build Changes:

  1. Add a property, je.log.iteratorMaxSize that can be used to set the maximum size of the read buffer. [#10749]

  2. Add a property, je.cleaner.minFilesToDelete that can be used to override the default of five files. [#10756]