Skip to content

9.7.2

Latest

Choose a tag to compare

@github-actions github-actions released this 11 Aug 10:31
· 155 commits to master since this release
142d881

Release 9.7.2

Bug Fixes

JS plugins now work in Docker with GraalVM 25.x (#663)

JavaScript plugins were completely broken in the Docker image since GraalVM 25.x. Four separate bugs were identified and fixed:

  1. Classloader issue (Source.findLanguage): JS language discovery failed because plugins/lib/js-language-*.jar was invisible to the system classloader. Fixed by routing through PluginsClassloader.

  2. Removed GraalVM option: The js.commonjs-core-modules-replacements option was removed in GraalVM 25.x but RESTHeart still set it, causing every Context creation to fail.

  3. Virtual threads crash (ArrayIndexOutOfBoundsException): Truffle's DefaultContextThreadLocal doesn't support Java virtual threads (oracle/graal#7520). Since RESTHeart uses virtual threads for request handling and plugin deployment, any polyglot Context operation crashed. Fixed by routing all Truffle operations through a dedicated platform thread ("RH JS PLT"), gated by the system property restheart.polyglot.force-platform-threads (default: true).

  4. Native image interceptor reflection: Intercept Point: null in native images caused by reachability-metadata.json registering the interceptPoint field on JSPlugin instead of JSInterceptor.

GraalVM native image fixes

  • Fixed plugin enabledByDefault annotation not being read in native images
  • Fixed null provider type in ProvidersChecker for native images
  • Added static metrics to native image configuration
  • Improved native image resource extraction and indexing
  • Added restheart-emails dependency to native image

Improvements

  • Dockerfile: Optimized JVM options for better performance in containers
  • Bootstrap logging: Improved consistency during startup
  • CI: Increased native image build timeout to 60 minutes

Known limitations

  • JS plugin execution is serialized on a single platform thread under concurrent load (performance trade-off for correctness). Full virtual thread parallelism will be restored when oracle/graal#7520 is fixed upstream (tracked in #665).
  • Escape hatch: -Drestheart.polyglot.force-platform-threads=false bypasses the workaround.

Dependencies

  • GraalVM: 25.1.3
  • Java: 25+