Skip to content

fix(grpc): allow multiple wildcard subscriptions when topic validation disabled#1083

Open
Rishabh-git10 wants to merge 3 commits into
dapr:mainfrom
Rishabh-git10:fix/grpc-multiple-wildcard-subscriptions
Open

fix(grpc): allow multiple wildcard subscriptions when topic validation disabled#1083
Rishabh-git10 wants to merge 3 commits into
dapr:mainfrom
Rishabh-git10:fix/grpc-multiple-wildcard-subscriptions

Conversation

@Rishabh-git10

Copy link
Copy Markdown

Description

Fixes a ValueError startup crash and subscription drop when registering multiple wildcard paths on the same pub/sub component with disable_topic_validation=True.

Previously, enabling this flag collapsed internal tracking keys down to the pub/sub identifier alone, causing map collisions and rendering the sidecar blind to subsequent subscriptions. This change standardizes discrete internal dictionary keys across all registration paths. It introduces a regex-based pattern matching fallback evaluation inside OnTopicEvent and _handle_bulk_topic_event to route events when direct string lookups fail.

Issue reference

Closes #436

Checklist

Please make sure you've completed the relevant tasks for this PR, out of the following list:

  • Code compiles correctly
  • Created/updated tests
  • Extended the documentation

…n disabled

Signed-off-by: Rishabh Dewangan <107680241+Rishabh-git10@users.noreply.github.com>
@Rishabh-git10 Rishabh-git10 requested review from a team as code owners June 9, 2026 20:21

@seherv seherv left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks a lot for contributing to Dapr! Here are my comments

Comment thread ext/dapr-ext-grpc/dapr/ext/grpc/_servicer.py Outdated
Comment thread ext/dapr-ext-grpc/dapr/ext/grpc/_servicer.py Outdated

sub = registered_topic.subscription
rules = registered_topic.rules

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here you should build an additional route map based on topic to know which handler actually takes it in case you get a wildcard. Something like

if disable_topic_validation and rule is None:
    sub.routes.default = topic
    self._route_map[(pubsub_name, topic)] = cb

Comment thread ext/dapr-ext-grpc/dapr/ext/grpc/_servicer.py Outdated
Comment thread ext/dapr-ext-grpc/dapr/ext/grpc/_servicer.py Outdated
Signed-off-by: Rishabh Dewangan <107680241+Rishabh-git10@users.noreply.github.com>
@Rishabh-git10

Copy link
Copy Markdown
Author

Thanks for the review and guidance @seherv.
I have consolidated the fallback routing logic into _get_topic_callback to remove duplication. Removed the redundant _match_topic function.

@CasperGN

Copy link
Copy Markdown
Contributor

@Rishabh-git10 can you fix the conflicts pls?

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.

PubSub disable_topic_validation=True breaks multiple subscriptions

3 participants