JetBrains Xodus v1.3.232 Release Notes

Release Date: 2020-05-03 // about 1 year ago
  • πŸš€ This release brings bug fixes and performance improvements related to database ciphering and memory usage control.

    ChaCha20 implementation by JetBrains

    The new implementation of ChaCha20, modern stream ciphering algorithm widely used nowadays, is written in Kotlin. Prior to this release, ChaCha20 had the only implementation provided by the Legion of the Bouncy Castle. The new implementation is identical to the Bouncy Castle's one in terms of ciphering, but consumes 13% less CPU:

    Benchmark Mode Cnt Score Error Units
    JMHStreamCipherBenchmarks.chaChaCrypt thrpt 12 97.439 Β± 1.069 ops/us
    JMHStreamCipherBenchmarks.jbChaChaCrypt thrpt 12 110.342 Β± 0.543 ops/us

    🚚 The new implementation has been used already for two months in YouTrack InCloud servers, as well as in the main production instance of JetBrains YouTrack. So it's quite safe to just replace the the Bouncy Castle's implementation (cipherId:jetbrains.exodus.crypto.streamciphers.ChaChaStreamCipherProvider) by the new one (cipherId:jetbrains.exodus.crypto.streamciphers.JBChaChaStreamCipherProvider) and have less CPU consumption as a benefit. The Bouncy Castle's implementation won't be removed in future versions.

    🌲 Log Cache can use Soft References

    πŸ‘€ As of 1.3.232, it is possible to configure shared log cache to use Soft References (see EnvironmentConfig#setLogCacheUseSoftReferences). If this setting is turned on, Java GC would be able to reclaim some heap memory occupied by log cache. As before, log cache can't use more memory than certain memory control settings allow. Such memory-flexible log cache can be extremely useful during load peaks, if and when memory consumption and/or memory traffic increases explosively. The setting should be turned on explicitly, any defaults remain unchanged. Thanks to Martin HΓ€usler for the proposal.

    πŸ› Bug fixes


    • XD-793 β€” GarbageCollector can miss BTree leaf in certain case of data corruption

    - XD-802 β€” Forced close of Environment can result in deadlock under load

    Entity Stores

    • XD-801 β€” NumberOfCachingJobs in EntityStoreStatistics is always 0

    πŸš€ Release Notes
    Maven Central

Previous changes from v1.3.124

  • πŸš€ This release brings bug fixes and minor performance improvements related to Entity Stores.

    API clarification.

    Starting from version 1.3.124, EntityStore.close() doesn't close underlying explicitly created Environment. Prior to 1.3.124, this contract was undefined.

    πŸ› Bug fixes

    • Environments
      • XD-786 β€” Xodus OutOfMemory during environment.truncateStore() of stores with large (100k+) records in 1.3.x.
      • XD-787 β€” Xodus cannot open multiple entity stores with the same environment
      • XD-789 β€” Stuck transaction monitor fails to finish expired transaction created against ContextualEnvironment

    πŸš€ Release Notes
    Maven Central