On Tue, 24 Nov 1998, Henrik Nordstrom wrote:
> Is there anyone working on false hit recovery?
Yes.
 
> forward.c should then cycle throught the list of addresses, and fail
> when the complete list has been tried two or three times.
>
> Perhaps there should be a limit on the number of HIT siblings to try.
> ...
> 2-3 is
> probably a reasonable limit on the number of HIT siblings to probe. Note
> that this restriction only makes sense on siblings and not parents
> and/or origin site.
I do not thing it is the best algorithm for several reasons:
        - in many cases it does not make sense to try several times
          (if the object is not there, it is unlikely to appear)
        - users do not care about #attempts, they care about time
        - parents and origin servers are special
I am not working on this algorithm myself, but that is what I would suggest
as a tentative plan. 
        - form a list of servers to try
        - note start time
        - success = false
        - while (!success && there-are-servers-left) {
                ~ if (time-passed >= opt.retry_timeout)
                        select next "guaranteed" server
                  else
                        select next server
                ~ success = try selected server
          }
        - if !success report ERR and maybe list servers tried (in the
          headers?)
"guaranteed" server is the server that must handle misses from us OR the
only-server-left if the server list contains only one member. Origin servers
and parents are examples of "guaranteed" servers.
I am not sure if we should STOP trying if there are guaranteed servers left,
but (we ran out of time and/or we tried at least one guaranteed server).
Doing so may result in more ERR messages propagated to the user.
Note that a time limit almost solves the problem when several caches in a
chain use this algorithm (whether with max number of retries a user may end
up waiting for several caches trying 2-3 peers, resulting in huge total
delays). 
It would be useful to forward an X-Already-Tried: header to peers so they do
not re-try some caches we have already checked out. "Some" because they may
still try caches that we had as siblings and they have as parents. Thus,
X-Already-Tried-Hitonly and X-Already-Tried-Missallowed may be in order. Ick. 
Clearly the scheme can be extended/improved to handle errors other than false
hits. For example, access denied errors and connection errors. 
 
Alex.
Received on Tue Jul 29 2003 - 13:15:54 MDT
This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 16:11:58 MST