Jackie-Jiang opened a new pull request, #19787: URL: https://github.com/apache/pinot/pull/19787
## Summary Upgrades Pulsar from 4.0.13 to 5.0.0 and adapts `pinot-pulsar` to the 5.0 client. Supersedes #19762, which only bumps the version and fails to compile. Pulsar 5.0 changes that affect Pinot: - The shaded client jars relocate every implementation class under `org.apache.pulsar.shade`; only the API modules keep their public names. - `pulsar-client` no longer depends on `pulsar-client-admin-api`. - `slf4j-api` and `jspecify` are declared with `runtime` scope. Dependency changes: - `pinot-pulsar` depends on `pulsar-client-all` (client and admin) instead of `pulsar-client`. `getTopics()` uses `PulsarAdmin`, whose implementation was previously only a test dependency, so it could not work at runtime. - `slf4j-api` and `jspecify` are declared `provided` in `pinot-pulsar`. Pulsar's `runtime` scope otherwise wins over the `provided` scope inherited through `pinot-spi` and drops them from the compile classpath. - Import `opentelemetry-bom` 1.66.0. Pulsar 5.0 requests OpenTelemetry 1.66 (including `opentelemetry-api-incubator` 1.66.0-alpha) while Google libraries request 1.62. Plugins bundle OpenTelemetry unrelocated, so mismatched versions can meet on the shared classpath. - Drop the `swagger-annotations` pin, which was kept for `pulsar-common`; it is now only reached through `swagger-jersey2-jaxrs` at the same version. Remove stale Pulsar mentions from dependency comments. Code changes, using only the public Pulsar API: - Add `PulsarMessageId`, a `MessageIdAdv` built from its components, for the next message id computed for every consumed message. Pulsar no longer exposes `MessageIdImpl` / `BatchMessageIdImpl`, and has no public factory for batched message ids. `toByteArray()` produces the same `MessageIdData` bytes as Pulsar's message ids, so persisted offsets are unchanged and readable across versions. Equality, hash code and ordering match Pulsar's message ids. - Create OAuth2 authentication through `AuthenticationFactory.create` with the built-in `AuthenticationOAuth2` plugin name, which Pulsar resolves when shaded. - Build partition names as `<topic>-partition-<index>` instead of using `TopicName`. 🤖 Generated with [Claude Code](https://claude.com/claude-code) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
