Skip to content

Upgrade jctools to 4.0.6 (jctools-core-jdk11)#4776

Merged
merlimat merged 2 commits intoapache:masterfrom
lhotari:lh-jctools-4.0.6
May 5, 2026
Merged

Upgrade jctools to 4.0.6 (jctools-core-jdk11)#4776
merlimat merged 2 commits intoapache:masterfrom
lhotari:lh-jctools-4.0.6

Conversation

@lhotari
Copy link
Copy Markdown
Member

@lhotari lhotari commented May 5, 2026

Motivation

The JCTools 4.0.6 release is available, with various fixes since 4.0.5. Keeping the dependency current is generally desirable.

Starting with 4.0.6, JCTools publishes a separate jctools-core-jdk11 Maven artifact that adds proper Java 9 module support (a module-info descriptor) on top of jctools-core. Switching to this artifact is the recommended way to consume JCTools on JDK 9+.

Pulsar is also upgrading to JCTools 4.0.6, so aligning the version in BookKeeper avoids classpath skew between the two projects and lets BookKeeper pick up the jctools-core-jdk11 enhancements at the same time.

JCTools is used in BookKeeper to implement BlockingMpscQueue.

Changes

  • Bump jctools.version from 4.0.5 to 4.0.6
  • Switch the dependency from org.jctools:jctools-core to org.jctools:jctools-core-jdk11. The jdk11 variant transitively depends on jctools-core, so both jars end up bundled in the distribution
  • Keep both jctools-core and jctools-core-jdk11 in <dependencyManagement> so their versions stay aligned via ${jctools.version}
  • Update LICENSE-server.bin.txt, LICENSE-all.bin.txt, and LICENSE-bkctl.bin.txt to list both org.jctools-jctools-core-4.0.6.jar and org.jctools-jctools-core-jdk11-4.0.6.jar. Verified with ./dev/check-all-licenses

References

lhotari added 2 commits May 5, 2026 11:59
Switch from org.jctools:jctools-core to org.jctools:jctools-core-jdk11
and bump version 4.0.5 -> 4.0.6.

The jctools-core-jdk11 artifact is a drop-in replacement that adds
proper Java 9 module support (module-info) on top of jctools-core,
which is brought in transitively. Both jars are bundled in the
distribution, so the LICENSE files reference both.

Release notes: https://github.com/JCTools/JCTools/releases/tag/v4.0.6
Changelog: JCTools/JCTools@v4.0.5...v4.0.6
Keep both jctools-core and jctools-core-jdk11 in <dependencyManagement>
so their versions stay aligned. jctools-core-jdk11 transitively depends
on jctools-core, and pinning both ensures any consumer that pulls in
either artifact directly resolves to the same version.
@merlimat merlimat merged commit a871f6e into apache:master May 5, 2026
34 of 36 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants