I have some other problems probably with this patch.

Currently trying to use a parent cache does not work for me.
I am testing the configuration with older squid trees and I have not any problem.

Did the configuration parameters changed? Are there changes I should take care about?




On 06/21/2011 07:29 PM, Alex Rousskov wrote:
On 06/21/2011 06:09 AM, Amos Jeffries wrote:
On 21/06/11 21:46, Tsantilas Christos wrote:
On 06/19/2011 05:19 AM, Amos Jeffries wrote:
Comm no longer contains implicit DNS resolution. It needs to be given
the remote IP address before opening.

Since ServiceRep::getConnection() is strictly synchronous and assumes
that there is only one IP for the service.

Xaction::openConnection() can become async so now contains:
"TODO: find the IPs and attempt each one if this is a named service"
marks the spot.

For now it converts IP-addressed services using raw-IP text conversion
"remote= s.cfg().host.termedBuf()". Which is synchronous and
non-blocking but not resolving FQDN.

When FQDN resolution is required do we ...

a) split openConnection() into two async steps and only use one of the
possibly multiple IPs returned?

OR

b) lookup the DNS at some far earlier point and store the IPA in
ServiceRep for some sort of load balancing selection of just one by
getConnection()?


This just needs:
   openConnection step 1 to call ipcache_nbgethostbyname()
   openConnection step 2 to do something similar to
src/peer_select.cc:peerSelectDnsResults() but tuned a bit for ICAP.

For a complete fix, we also need to modify the callers to handle a
two-step (i.e., async) openConnection(). AFAICT, both callers call
openConnection() at the end of an already async call, so it is not a
major problem, just more work.


Thank you,

Alex.


Reply via email to