lör 2012-07-07 klockan 21:26 +1200 skrev Amos Jeffries:
> What I'm thinking when reading this is that we could implement something 
> like this easily using the FwdState destinations array and a timeout. 
> While it is true that our destinations array is N-protocol rather than 
> 2-protocol, the same failover principles apply between any address 
> regardless of protocol family.
Actually the underlying problem does not only apply to ipv4/ipv6. It
applies in any multi-path situation.
> Right now we are still on the old serial sequence algorithm of 0-N timeouts
Which is bad.
:
>   * start opening destination[0], create a timeout event of N ms
>   * when the timeout occurs if the connection has not completed, bump 
> the destination[0] entry off and try the next.
>   * when a connection succeeds,
>    - if serverConn is already set, push the new conn into idle pconn 
> immediately and stop.
>    - otherwise; set serverConn and *if* it is the destination[0] shift 
> that list. continue with the request in any event.
Missing some minor things
* Integration with OK/BAD address status. If a selected address is known
good then wait significantly longer (seconds) for connections to
complete before trying next in parallell.
* Early killing of redundant connection attempts. After a connection
have succeeded we should quickly time out any other pending connection
attempts to other addresses for the same host name. But don't mark them
as bad. Only a full timeout period should make an address as bad.
* A filter to avoid doing this too often per hostname or IP. A
suggestion is to wait for previous attempt to complete/fail before
trying to open a new connection to an IP of unknown status.
> Possibly some modifications for the retries handling.
Which retries? Failed connection attempt or failed request?
Regards
Henrik
Received on Sat Jul 07 2012 - 10:44:20 MDT
This archive was generated by hypermail 2.2.0 : Sat Jul 07 2012 - 12:00:02 MDT