Skip to content

Upgrade default Apache Pulsar version to 5.0.0 - #723

Merged
lhotari merged 5 commits into
apache:masterfrom
lhotari:lh-pulsar-5.0.0
Oct 6, 2026
Merged

lhotari merged 5 commits into
apache:masterfrom
lhotari:lh-pulsar-5.0.0

Conversation

@lhotari

@lhotari lhotari commented Oct 6, 2026 •

Copy link
Copy Markdown
Member

Motivation

Apache Pulsar 5.0.0 has been released. It no longer publishes the apachepulsar/pulsar-all image, and the Pulsar 5.0 upgrade guide recommends removing PULSAR_GC overrides so that the Pulsar launcher selects the garbage collector options for the Java version in the image.

Modifications

  • Set appVersion to 5.0.0 and defaultPulsarImageRepository to apachepulsar/pulsar.
  • Remove the PULSAR_GC defaults from all components (the previous defaults included the obsolete -XX:+ZGenerational flag on Java 25, and the standalone and function worker defaults used G1). Move -XX:+AlwaysPreTouch, -XX:+UseTransparentHugePages and -XX:+ExitOnOutOfMemoryError to PULSAR_MEM.
  • CI:
    • Test the previous LTS with Pulsar 4.0.14 instead of 3.0.17, using apachepulsar/pulsar.
    • Run all upgrade tests that install a previously released chart version with the previous LTS image, so that Pulsar 5.0 is never deployed with an older chart version.
    • Upgrade from chart 4.6.0 instead of 3.2.0 in the victoria-metrics-k8s-stack upgrade test. Chart versions before 4.6.0 hard-code the BookKeeper statsProviderClass org.apache.bookkeeper.stats.prometheus.PrometheusMetricsProvider, which isn't included in the apachepulsar/pulsar 4.0.x image, so bookies fail to start.
    • Use the default image in the Pulsar v5 Functions test instead of 5.0.0-M1.
    • Upgrade azure/setup-helm to v5.0.1. v5.0.0 was removed from the ASF allowed actions list, which caused the CI workflow to fail with startup_failure (also on master).
  • README.md:
    • Document the Pulsar 5.0 upgrade: the pulsar-all removal, offloaders and connectors, the PULSAR_GC removal and the node configuration needed for Transparent Huge Pages, package management rollback settings, TLS hostname verification and the BookKeeper metrics provider class.
    • Add a section about choosing Oxia as the metadata store for new clusters. Oxia is recommended for production use to get the full feature set of Pulsar 5.0's scalable topics. The chart default remains ZooKeeper and will change to Oxia in a future chart version. Migrating existing ZooKeeper installations requires a special procedure that the chart doesn't support yet.

The apachepulsar/pulsar:5.0.0 image includes the jcloud tiered-storage offloader (S3, GCS, Azure Blob, Aliyun), so broker.storageOffload keeps working. The filesystem offloader and IO connectors are no longer bundled.

Verifying this change

  • Make sure that the change passes the CI checks.

Pulsar 5.0.0 no longer publishes the apachepulsar/pulsar-all image, so
the chart now uses apachepulsar/pulsar everywhere.

- Set appVersion to 5.0.0 and defaultPulsarImageRepository to
  apachepulsar/pulsar.
- Remove the PULSAR_GC defaults so the Pulsar launcher selects the
  garbage collector options for the Java version in the image, as the
  Pulsar 5.0 upgrade guide recommends. Move -XX:+AlwaysPreTouch,
  -XX:+UseTransparentHugePages and -XX:+ExitOnOutOfMemoryError to
  PULSAR_MEM.
- Test the previous LTS with Pulsar 4.0.14 instead of 3.0.17, using the
  apachepulsar/pulsar image, also with older chart versions that don't
  support defaultPulsarImageRepository.
- Run all upgrade tests that install a previously released chart version
  with the previous LTS image so that Pulsar 5.0 is never deployed with
  an older chart version.
- Use the default image in the Pulsar v5 Functions test instead of
  5.0.0-M1.
- Document the Pulsar 5.0 upgrade in README.md.
azure/setup-helm v5.0.0 was removed from the ASF approved actions list,
which causes the CI workflow to fail with startup_failure.
Chart versions before 4.6.0 hard-code the BookKeeper statsProviderClass
org.apache.bookkeeper.stats.prometheus.PrometheusMetricsProvider, which
isn't included in the apachepulsar/pulsar 4.0.x image, so bookies fail
to start when chart 3.2.0 is used with Pulsar 4.0.14. Chart 4.6.0 also
supports defaultPulsarImageRepository, so the per-component image
overrides are no longer needed.
@lhotari
lhotari merged commit 6157a6b into apache:master Oct 6, 2026
41 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.

1 participant