Istvan Toth created KNOX-3041:
---------------------------------
Summary: Load Balancer backend selection synchronization issue
Key: KNOX-3041
URL: https://issues.apache.org/jira/browse/KNOX-3041
Project: Apache Knox
Issue Type: Bug
Components: Server
Reporter: Istvan Toth
I was trying to run a benchmark over Knox, with several Http client instances
started at the same time on separate threads.
I found that every single client was directed to the same backend, which was
saved in the session, so instead of accessing each backend, every request was
directed to a single one.
While this was a benchmark/load test tool, any non-interactive client can
exhibit similar behaviour, defating the point of load balancing.
Looking at
org.apache.knox.gateway.ha.dispatch.ConfigurableHADispatch.executeRequestWrapper(HttpUriRequest,
HttpServletRequest, HttpServletResponse)
, I think that the sitation could be improved by calling
haProvider.makeNextActiveURLAvailable BEFORE the request is executed.
It would be still racy, but the race window would be dramatically smaller,
running some simple local code, which should be on the microsecond scale,
instead of performing a full HTTP reqest, which is on on the millisecond scale
at best.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)