Skip to content

Conversation

@Revolyssup
Copy link
Contributor

When a client requests, if the currently hit route or the corresponding upstream changes again, APISIX will try to re-create the health check checker for the upstream of the currently hit route and release the original health check checker.

During the process of re-creating the health check checker, when each upstream node is added as the target of the health check, the locking operation may take a long time to execute.

If the process of creating a health check checker is relatively long, and the route or the corresponding upstream changes at the same time, the parent of the upstream has been released, and in the previous step, the re-created healthcheck checker will be added to an empty object (the original intention is to Added to the new upstream parent), the checker can't be released, resulting in an "orphan" checker, which always performs health checks on the old nodes.

@dosubot dosubot bot added size:S This PR changes 10-29 lines, ignoring generated files. bug Something isn't working labels Nov 20, 2024
@Revolyssup Revolyssup requested a review from moonming November 20, 2024 19:58
@Revolyssup Revolyssup changed the title fix: health checker can't be released due to health parent being rele… fix: the health checker can't be released due to the health parent being released early Nov 20, 2024
@Revolyssup Revolyssup merged commit 4e05192 into apache:master Nov 22, 2024
30 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working size:S This PR changes 10-29 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants