[improve][client] Enhance error handling for non-exist subscription in consumer creation #23254
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
When
allowAutoSubscriptionCreation
is set tofalse
, creating a consumer for a subscription that does not exist does not throw aSubscriptionNotFoundException
. Instead, it throws aPulsarClientException
. This behavior complicates determining whether the subscription exists, requiring users to perform checks likegetRootCause(e).getMessage().matches(".*Subscription .*does not exist.*")
before #22164. Even after #22164, while the root cause becomesSubscriptionNotFoundException
, additional handling is still necessary.Modifications
This change modifies the code to throw
SubscriptionNotFoundException
directly when attempting to create a consumer for a non-existent subscription. This exception is a subclass ofPulsarClientException
, ensuring backward compatibility and providing a clearer error handling path for users.Verifying this change
This PR also updates the corresponding test in
org.apache.pulsar.client.api.MultiTopicsConsumerTest#testSubscriptionNotFound
.Does this pull request potentially affect one of the following parts:
If the box was checked, please highlight the changes
Documentation
doc
doc-required
doc-not-needed
doc-complete
Matching PR in forked repository
PR in forked repository: Shawyeok#17