Skip to content

1.3.232

Compare
Choose a tag to compare
@penemue penemue released this 03 May 19:14
· 827 commits to master since this release

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

  • Environments

    • 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