Skip to content

Endpoint renderer waits for quiescence with stopping the rendering #62524

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 12 commits into
base: main
Choose a base branch
from

Conversation

ilonatommy
Copy link
Member

@ilonatommy ilonatommy commented Jul 1, 2025

Fix SSR with NotFound triggered after async operation started

Description

NotFound page didn't get rendered if NavigationManager.NotFound() got called after an async operation. It's because we are making sure nothing gets rendered after the current render batch. We are stopping the renderer after setting the 404 code. The Router was queueing rendering of 404 page after the "stop" signal.

We used to test async operations with streaming enabled and no-streaming was tested with sync operations only. Test cases with _AfterAsyncOperation_ResponseNotStarted_SSR were added to cover POST and GET scenarios of this kind.

To fix it, we changed the SignalRendererToFinishRendering methods to RequestRendererToFinishRendering. Now, when setting the 404 code we only signal the need to stop the renderer in the future. Then, we stop it for real after the quiescence task is finished.

Because we already observed a similar problem with POST requests, we were working that around by using fetch on the client to show 404 page in POSTs. In this PR we could remove the workaround and follow the same pattern as for GETs. This introduced a change in "NotFoundSetOnFormSubmit" tests. POST does not behave anymore as response started.

Fixes #62469

@ilonatommy ilonatommy self-assigned this Jul 1, 2025
@ilonatommy ilonatommy added the area-blazor Includes: Blazor, Razor Components label Jul 1, 2025
@ilonatommy ilonatommy requested a review from a team as a code owner July 1, 2025 15:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-blazor Includes: Blazor, Razor Components
Projects
None yet
Development

Successfully merging this pull request may close these issues.

NotFound page doesn't get rendered if NavigationManager.NotFound() is called from an async method
1 participant