Skip to content

8.1.0

Compare
Choose a tag to compare
@github-actions github-actions released this 15 Oct 17:20
· 302 commits to master since this release
bedf6ca

RESTHeart 8.1.0

Release Notes

💡 Highlights

  • Performance Enhancements: Leveraged virtual threads for GraalVM polyglot context allocation and caching mechanisms for improved performance.
  • GraphQL Enhancements: Added configuration options for caching, and made GraphAppsUpdater more efficient, reducing the impact of cache invalidation.
  • Native Image Improvements: Enhanced native image support by fixing missing modules, upgrading dependencies, and resolving several build issues.
  • Security and Bug Fixes: Addressed thread leaks, unsanitized input vulnerabilities, and other important bug fixes.

🆕 New Features

  • Virtual Threads in GraalVM Polyglot: Optimized polyglot context allocation with virtual threads, introducing a queue to reuse contexts, which greatly improves performance ([0832bc9]).
  • GQL Cache Toggle: Introduced a configuration option to disable the GraphQL application cache (/graphql/app-cache-enabled->false) to facilitate testing and development ([5e58b4c]).
  • GraphAppsUpdater: Added a new component to periodically revalidate entries in the GraphQL applications cache, ensuring consistency and reducing unnecessary invalidations ([1267a82]).

🚀 Performance Improvements

  • Graph App Initialization: Apps are now initialized on separate threads, significantly reducing startup time ([75438cd]).
  • Caching Improvements:
    • Optimized the CaffeineLoadingCache.put() method ([06e9566]).
    • Improved GraphQL App cache updates to minimize invalidation overhead when app definitions change ([01a3513]).
  • Caffeine Cache Updates: Virtual threads are now used for the Caffeine cache's async methods, contributing to better overall throughput ([d5a8e8d]).

🐛 Bug Fixes

  • Thread Leak in ChangeStreamWorker: Fixed a thread leak that occurred due to inactive change streams ([743e169]).
  • Missing Modules and Dependencies: Added the missing metrics module to the native image to resolve incomplete builds ([04ddcb5]).
  • PolyglotDeployer Bugs:
    • Fixed a bug where restheart-commons was not being copied to the lib directory ([0887562]).
    • Corrected the getPluginsDirectory() logic in PolyglotDeployer ([b42f5ff]).

🧼 Refactoring and Cleanups

  • CleanerUtils: Refactored to use virtual threads for resource cleanup ([54c6a7a]).
  • URLUtils and RequestLogger:
    • Updated URLUtils.decodeQueryString(exchange) to improve URL decoding consistency ([94f3d20]).
    • Fixed an issue in RequestLogger when URLs contained illegal hex percent-encoded characters ([78ebe24]).
  • JwtAuthentication: Added a method to validate key complexity, improving the robustness of authentication ([e0d8b8b]).

⬆️ Dependency Upgrades

  • Truffle: Upgraded to version 24.1.0 ([d4a074f]).
  • Undertow: Upgraded to version 2.3.16.Final, followed by a subsequent update to 2.3.17.Final ([88cf353], [db8f15a]).
  • MongoDB, Logback, and ClassGraph: Updated to the latest versions to maintain compatibility and security ([b0946a7]).

🚚 Native Image and Docker Improvements

  • GraalVM and Native Image Fixes: Resolved multiple issues related to GraalVM native images, including adding dependencies, optimizing polyglot classes, and addressing build breakages caused by transitioning from fat jars to restheart-core packaging ([2495713]).
  • Docker Updates:
    • Updated the base image to debian:bookworm-slim ([d65348f]).
    • Modified Dockerfile to improve installation efficiency and replace the fat JAR with modularized dependencies ([42f5fb9]).

👀 Other Noteworthy Changes

  • Plugin Deployment Optimization: Optimized plugin deployment by excluding unnecessary JARs from startup scanning ([8911f70]).
  • Native Image Debug Logging: Added debug-level logging for JARs found in /lib directories to assist in debugging ([e486c73]).

🔥 Breaking Changes

  • Packaging Changes: The former restheart-core.jar has been renamed to restheart.jar as part of the ongoing refactoring and modularization effort. Adjust your configurations accordingly if you were referring to the previous artifact name.

🧌 Known Issues

  • Standalone Mode: The graph apps initializer has been disabled in standalone mode due to potential startup conflicts ([cc93aa7]).

Full Changelog: 8.0.14...8.1.0