1.3.232
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
-
Entity Stores
- XD-801 — NumberOfCachingJobs in EntityStoreStatistics is always 0