BUG/MEDIUM: backend: prefer-last-server breaks redispatch
Since 1.5-dev20, we have a working server-side keep-alive and an option "prefer-last-server" to indicate that we explicitly want to reuse the same server as the last one. Unfortunately this breaks the redispatch feature because assign_server() insists on reusing the same server as the first one attempted even if the connection failed to establish. A simple solution consists in only considering the last connection if it was connected. Otherwise there is no reason for being interested in reusing the same server.
This commit is contained in:
parent
653dcd64da
commit
2481d167ef
|
@ -543,6 +543,7 @@ int assign_server(struct session *s)
|
|||
conn = objt_conn(s->req->cons->end);
|
||||
|
||||
if (conn &&
|
||||
(conn->flags & CO_FL_CONNECTED) &&
|
||||
((s->be->options & PR_O_PREF_LAST) || (s->txn.flags & TX_PREFER_LAST)) &&
|
||||
objt_server(conn->target) && __objt_server(conn->target)->proxy == s->be &&
|
||||
srv_is_usable(__objt_server(conn->target)->state, __objt_server(conn->target)->eweight)) {
|
||||
|
|
Loading…
Reference in New Issue