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)

Reply via email to