[fix][broker] Handle flow_or_qps bundle split requests in ELM#25442
Open
Denovo1998 wants to merge 2 commits intoapache:masterfrom
Open
[fix][broker] Handle flow_or_qps bundle split requests in ELM#25442Denovo1998 wants to merge 2 commits intoapache:masterfrom
Denovo1998 wants to merge 2 commits intoapache:masterfrom
Conversation
5 tasks
Contributor
There was a problem hiding this comment.
Pull request overview
Fixes manual namespace bundle split behavior when using the flow_or_qps_equally_divide algorithm, ensuring the requested algorithm drives option construction and making the extensible load manager (ELM) treat “no valid split boundary” as a successful no-op instead of a misleading “bundle not found” failure.
Changes:
- Build
BundleSplitOptionbased on the requested split algorithm (avoidsClassCastExceptionforflow_or_qps_equally_divide). - In ELM split flow, treat “no valid boundary” as a no-op success and keep “bundle not found” only for real lookup failures.
- Add regression tests covering the requested-algorithm path and the ELM no-boundary no-op behavior.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| pulsar-broker/src/main/java/org/apache/pulsar/broker/namespace/NamespaceService.java | Constructs split options based on the requested algorithm (not default config), preventing incorrect option types. |
| pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/extensions/ExtensibleLoadManagerImpl.java | Adjusts ELM bundle split to no-op on empty/null boundaries and only error on actual split-bundle lookup failures. |
| pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java | Adds regression test ensuring FLOW_OR_QPS requested algorithm doesn’t fail when default algorithm differs. |
| pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/extensions/ExtensibleLoadManagerImplTest.java | Adds regression test ensuring ELM path no-valid-boundary case succeeds and leaves bundle layout unchanged. |
Contributor
Author
|
The current CI runs really fast. Still stable! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
Manual bundle split requests in the extensible load manager path can fail incorrectly when
flow_or_qps_equally_divideis used. The broker was building the split option from the default configured algorithm instead of the algorithm requested by the admin API, which can trigger aClassCastException. In addition, whenflow_or_qps_equally_dividecannotproduce a valid split boundary, the extensible load manager path turns that no-op case into
a misleading
Bundle ... not found under namespaceerror.Modifications
BundleSplitOptionfrom the requested split algorithm instead of the default broker configurationFlowOrQpsEquallyDivideBundleSplitOptiononly when the actual requested algorithm isflow_or_qps_equally_divideExtensibleLoadManagerImplinstead of reportingBundle ... not found under namespacebundle not founderror path only for actual split-bundle lookup failuresFLOW_OR_QPS_EQUALLY_DIVIDEno longer fails when the default split algorithm is differentVerifying this change
(Please pick either of the following options)
This change is a trivial rework / code cleanup without any test coverage.
(or)
This change is already covered by existing tests, such as (please describe tests).
(or)
This change added tests and can be verified as follows:
(example:)
Documentation
docdoc-requireddoc-not-neededdoc-completeMatching PR in forked repository
PR in forked repository: Denovo1998#25