Skip to content

Chronicle Map 3.11.0

Compare
Choose a tag to compare
@leventov leventov released this 21 Nov 03:07

Chronicle Map 3.11.0 brings improvements to stability and manageability of Chronicle Map, especially in use cases when ChronicleMaps are small and/or short-living, and/or there are many of them in the JVM.

Changes since 3.10.1:

  • Update to chronicle-bom 1.13.34.
  • Added shutdown hook, which prevents leaving shared Chronicle Map's memory in inconsistent state on System.exit(), interrupting the JVM via kill -SIGINT or the system user logoff, of the system shutdown.
  • Fix memory leak, which prevented the Chronicle Map's direct memory (either shared or not) to be released, if the ChronicleMap is not manually closed, and the thread(s) from which the ChronicleMap was accessed is alive.
  • Added offHeapMemoryUsed() methods to ChronicleHash interface (i. e. ChronicleMap and ChronicleSet) which allows to monitor off-heap memory usage by the given ChronicleMap in the JVM.
  • Added ChronicleHashBuilder.name() configuration and ChronicleHash.toIdentityString() for easier identification of ChronicleMaps during error handling, debugging, logging, etc. This is also used inside Chronicle Map library itself, the identification string is added to messages of most Exceptions, thrown within the library.
  • Revised Exception throwing throughout the library, throwing specific InterProcessDeadLockException when Chronicle Maps thinks it encounters an inter-process deadlock condition.
  • Make the default key/value marshallers for many types (including String, CharSequence, Serializable, BytesMarshallable, etc.) much leaner on resource consumption, in particular they no don't allocate direct memory themselves, unless the serialized key or value is bigger than 2 GB.
  • The file passed to ChronicleHashBuilder.createPersistedTo(), recoverPersistedTo() and similar methods is not canonicalized, which prevents potential race conditions between ChronicleMaps in the JVM, trying to open the same persistence file via different symbolic links.
  • Smaller fixes and improvements.

Non-source code changes:

  • Clarified Chronicle Map license conditions. Chronicle Map is LGPL v3. Preparing a build under different license is possible, contact the copyright holders if you are interested.

Minor version number (3.10 -> 3.11) is updated because of the updated dependencies. The Chronicle Map data structure specification is still in the revision 1. The data format hasn't changed.

Download the JAR: https://oss.sonatype.org/content/groups/public/net/openhft/chronicle-map/3.11.0/chronicle-map-3.11.0.jar