merlimat opened a new pull request, #25559:
URL: https://github.com/apache/pulsar/pull/25559
## Summary
First PR in the PIP-468 series introducing scalable topics. This PR lands
the core broker-side infrastructure:
- `ScalableTopicController` — per-topic coordinator with leader election,
consumer session management, and layout tracking.
- `SegmentLayout` — pure data/math for the hash-range segment DAG.
- `SubscriptionCoordinator` — in-memory consumer-assignment tracking
per subscription.
- `ScalableTopicService` — per-broker service managing controller
lifecycle (get/release controllers, lifecycle hooks on `BrokerService`).
- Metadata-store resources: `ScalableTopicResources`,
`ScalableTopicMetadata`, `ConsumerRegistration`, `SubscriptionMetadata`,
`SubscriptionType`.
- Unit tests for `SegmentLayout` and `SubscriptionCoordinator`.
## Tests
Only the self-contained pure-data components have unit tests in this PR
(`SegmentLayoutTest`, `SubscriptionCoordinatorTest`).
End-to-end tests of `ScalableTopicController` and `ScalableTopicService`
are deferred to subsequent PRs because their setup depends on code that
lands later:
- The tests mock `PulsarAdmin.scalableTopics()`, a type added by the
admin-API PR.
- `splitSegment`/`mergeSegments` live with the admin layer (they invoke
`admin.scalableTopics().createSegmentAsync` / `terminateSegmentAsync`)
and their tests move with them.
## Test plan
- [x] `:pulsar-broker:compileJava` / `:pulsar-broker:compileTestJava`
succeed on this commit in isolation.
- [x] `./gradlew :pulsar-broker:test --tests
"org.apache.pulsar.broker.service.scalable.*"`
passes (`SegmentLayoutTest`, `SubscriptionCoordinatorTest`).
--
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]