Repository navigation
fix(event_handler): match AppSync Events wildcard routes on segment boundaries - #8546
Conversation
…oundaries find_best_route() turned a trailing "/*" into ".*" by slicing six characters off "[^/]+", which also removed the preceding "/". A route such as "/default/users/*" was compiled to ^/default/users.*$ and matched "/default/usersettings", so that channel was dispatched to the more specific but wrong handler instead of "/default/*". Strip only the wildcard pattern so the separator is kept.
|
Thanks a lot for your first contribution! Please check out our contributing guidelines and don't hesitate to ask whatever you need. |
leandrodamascena
left a comment
There was a problem hiding this comment.
Nice catch @LemonCondor! I was able to reproduce the bug and confirm the fix routes /default/usersettings to /default/* while keeping /default/users/... on the specific handler. Approving, thanks for the contribution!
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #8546 +/- ##
========================================
Coverage 96.95% 96.95%
========================================
Files 317 317
Lines 15911 15911
Branches 1398 1398
========================================
Hits 15426 15426
Misses 350 350
Partials 135 135 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
Awesome work, congrats on your first merged pull request and thank you for helping improve everyone's experience! |
|
Awesome work, congrats on your first merged pull request and thank you for helping improve everyone's experience! |



Issue number: closes #8545
Summary
Changes
find_best_routeturned a trailing[^/]+into.*withpattern[:-6]."[^/]+"is 5 characters, so the/before it was dropped too:/default/users/*became^/default/users.*$. This PR strips only the wildcard, so the regex is^/default/users/.*$, as the docstring already describes. It also fixes the docstring example for/default/v1/*.Tests:
test_appsync_events_resolvers.py, which publishes to/default/usersettingswith handlers on/default/*and/default/users/*;find_best_routeintest_functions.py.Without the fix both fail. With the fix, the appsync events unit and functional tests pass.
User experience
Before: publishing to
/default/usersettings(or/default/users-archive/1) ran the/default/users/*handler.After: it runs the
/default/*handler. Channels under/default/users/...still go to/default/users/*.By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
Disclaimer: We value your time and bandwidth. As such, any pull requests created on non-triaged issues might not be successful.