Skip to content

Commit

Permalink
fix(balancer): respect max retries (#12346)
Browse files Browse the repository at this point in the history
In the balancer phase, when obtaining a connection from the upstream
connection pool, the `cached` attribute of the peer connection is set
to 1(`pc->cached = 1;`), indicating that the connection is obtained
from the cache.

If an error occurs during the use of this connection, such as
"upstream prematurely closed connection" the system will increase the
`tries` attribute of the peer connection by executing
`u->peer.tries++`.

`tries` represents the maximum number of attempts to connect to an
upstream server. It is equal to the normal 1 attempt + `retries`
(default value is 5) = 6.
The occurrence of `u->peer.tries++` is unexpected and it results
in the actual retry count exceeding 6 in worst cases.

This PR restores tries by callbacks to the balancer when
`u->peer.tries++` is unexpectedly set.

FIX [FTI-5616](https://konghq.atlassian.net/browse/FTI-5616)

Signed-off-by: tzssangglass <[email protected]>
  • Loading branch information
tzssangglass committed Jan 22, 2024
1 parent 710abc4 commit a558a31
Show file tree
Hide file tree
Showing 3 changed files with 410 additions and 390 deletions.
Loading

0 comments on commit a558a31

Please sign in to comment.