Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
pinctrl: reset success and failures n_count regardless of svc state
This patch adds reset n_count regardless of svc state and does only if n_count >= configured_count. The behavior hc with windows server as backend in load balancers show some issue with counters, e.g.: ovn-controller --> win_srv | SYN ovn-controller <-- win_srv | SYN_ACK <- increase n_success ovn-controller --> win_srv | RST_ACK ovn-controller <-- win_srv | SYN_ACK (TCP Retransmission) <- increase n_success ovn-controller --> win_srv | RST_ACK ovn-controller <-- win_srv | SYN_ACK (TCP Retransmission) <- increase n_success n_success == success_count => status = online; n_success = 0 ovn-controller --> win_srv | RST_ACK ovn-controller <-- win_srv | RST (win_srv don't recive ACK and sent RST) increase n_failures (count = 1) After wait_time: ovn-controller --> win_srv | SYN ovn-controller <-- win_srv | SYN_ACK <- increase n_success ovn-controller --> win_srv | RST_ACK ovn-controller <-- win_srv | SYN_ACK (TCP Retransmission) <- increase n_success ovn-controller --> win_srv | RST_ACK ovn-controller <-- win_srv | SYN_ACK (TCP Retransmission) <- increase n_success n_success == success_count => status = online; n_success = 0 ovn-controller --> win_srv | RST_ACK ovn-controller <-- win_srv | RST (win_srv don't recive ACK and sent RST) increase n_failures (count = 2) After wait_time: ovn-controller --> win_srv | SYN ovn-controller <-- win_srv | SYN_ACK <- increase n_success ovn-controller --> win_srv | RST_ACK ovn-controller <-- win_srv | SYN_ACK (TCP Retransmission) <- increase n_success ovn-controller --> win_srv | RST_ACK ovn-controller <-- win_srv | SYN_ACK (TCP Retransmission) <- increase n_success n_success == success_count => status = online; n_success = 0 ovn-controller --> win_srv | RST_ACK ovn-controller <-- win_srv | RST (win_srv don't recive ACK and sent RST) increase n_failures (count = 3) n_failures == failure_count => status = offline; n_failures = 0 So, the main point is svc reset the counters only for current state if n_success >= success_count, but if a backend of lb for some reason sent RST to ovn-controller it's just increase count and will reset only then state is offline and greater or equal than failure_count. The same for SYN_ACK. Signed-off-by: Evgenii Kovalev <[email protected]> Acked-by: Mark Michelson <[email protected]> Signed-off-by: Dumitru Ceara <[email protected]> (cherry picked from commit 8e71bee)
- Loading branch information