Skip to content

[uss_qualifier] Improve participant identification from notifications#1454

Merged
BenjaminPelletier merged 5 commits into
interuss:mainfrom
BenjaminPelletier:fix-1444
May 14, 2026
Merged

[uss_qualifier] Improve participant identification from notifications#1454
BenjaminPelletier merged 5 commits into
interuss:mainfrom
BenjaminPelletier:fix-1444

Conversation

@BenjaminPelletier
Copy link
Copy Markdown
Member

The PR fixes #1444 by improving the way participants responsible for notifications are identified. This PR builds on #1452 and only the second commit is distinct from that PR.

One previous difficulty is that query clients were being evaluated similarly to query servers when attempting to determine attribution. This PR makes the identification routines explicit regarding whether the participant ID for the client or server of a query is being determined.

When a client is being determined, an appropriate method is to look at callback URLs in the payload the client provided if the payload contains a callback URL. To determine whether a query's payload contains a callback URL, we need to know what type of query it is, and this is accomplished by #1452 when retrieving interaction queries from mock_uss. For a few specific types of queries, callback URLs are extracted from their particular locations in each of those query types and then compared against server URL regexes.

The configuration parameter astm_url_regexes is clarified and broadened to server_url_regexes since there is no reason the server in question needs to be serving an ASTM endpoint to identify the participant responsible for that server.

These explicit participant identification methods are used in sp_notification_behavior.py, replacing the previous incorrect ad hoc method of participant identification.

This PR also opportunistically fixes some other issues with sp_notification_behavior.py:

  • Queries are associated with failing checks as should always be the case when a query provided data informing a failed check. To make this a bit more convenient, a new way to reference queries in a failed check is added, and basedpyright insists on the changes to *_ref_synchronization.py to allow this.
  • The needlessly-long query window for interactions is closed; this resolves [uss_qualifier] NetRID: SP Notification behavior – constrain requested notifications further #1052
  • if/else control via exception is removed in favor of explicit failure
  • RequestError is removed from catch because the underlying query_and_describe should never raise this kind of exception

@BenjaminPelletier BenjaminPelletier marked this pull request as ready for review May 13, 2026 22:59
class USSIdentifiers(ImplicitDict):
astm_url_regexes: Optional[list[str]]
"""If a URL to an ASTM (F3411, F3548, etc) endpoint matches one of these regular expressions, assume the participant is responsible for that server"""
server_url_regexes: Optional[list[str]]
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.

This may deserve a note in the NEXT_RELEASE_NOTES.md

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Absolutely; thanks for the catch

mock_uss: mock_uss_dp
id_generator: id_generator
dss_pool: dss_instances
uss_identification: uss_identification?
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.

Why is this optional for v19 and not v22a ?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I think v22a is correct while this is not -- thanks; fixed.

@BenjaminPelletier BenjaminPelletier merged commit 7da836a into interuss:main May 14, 2026
23 checks passed
@BenjaminPelletier BenjaminPelletier deleted the fix-1444 branch May 14, 2026 16:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants