Summary
The data explorer enters an infinite retry loop when loaded with an invalid filter query parameter value. The Azul request 404s and the client re-issues it continuously due to a React re-render loop — the same failure pattern previously fixed in #4601 / PR #4607 appears to have resurfaced (or this path was never covered).
Reproduction
Open this URL (invalid/unknown datasets.registered_id value in the filter):
https://explore.anvilproject.org/datasets?filter=%5B%7B%22categoryKey%22%3A%22datasets.registered_id...
Expected: page renders an error state (empty results, or an error boundary message).
Actual: the page hangs; browser devtools show the Azul request being re-fired continuously. The 404 response does not halt retries because the retry is driven by a component re-render higher up the tree, not by the retry logic in the HTTP client.
Context
Suggested next steps
Re-investigate the error path for invalid filter params — it likely bypasses the error boundary placement fix from #4607 (different provider / different point in the tree). Confirm whether the fix in #4607 needs to be extended, or whether a separate provider is throwing outside the boundary.
Summary
The data explorer enters an infinite retry loop when loaded with an invalid
filterquery parameter value. The Azul request 404s and the client re-issues it continuously due to a React re-render loop — the same failure pattern previously fixed in #4601 / PR #4607 appears to have resurfaced (or this path was never covered).Reproduction
Open this URL (invalid/unknown
datasets.registered_idvalue in the filter):https://explore.anvilproject.org/datasets?filter=%5B%7B%22categoryKey%22%3A%22datasets.registered_id...Expected: page renders an error state (empty results, or an error boundary message).
Actual: the page hangs; browser devtools show the Azul request being re-fired continuously. The 404 response does not halt retries because the retry is driven by a component re-render higher up the tree, not by the retry logic in the HTTP client.
Context
Suggested next steps
Re-investigate the error path for invalid filter params — it likely bypasses the error boundary placement fix from #4607 (different provider / different point in the tree). Confirm whether the fix in #4607 needs to be extended, or whether a separate provider is throwing outside the boundary.