View Single Post
  #6 (permalink)  
Old June 17th, 2004
GregorK GregorK is offline
Phex Developer
 
Join Date: May 9th, 2001
Location: Stuttgart, Germany
Posts: 988
GregorK is flying high
Default

In case you are using dynamic query C will never see queries from A since dynamic query is first doing a network probe query with a TTL of 1. The query will only get forwarded to B and not further since the TTL ended and C is not a Leaf (Ultrapeer QRP is only aggregating Leaf QRP tables).

After doing probe queries, the standard query TTL is determined based on the probe query results, the querying is continued. But B will never see a query again since it already received the probe. Usually this is not critical since as ultrapeer you tend to hold 20 connections or more and only a few are probed.

Ok, now you worked around the dynamic query engine fine for doing queries, but you also need to get around it for query replies.
NOTE: With doing this you MUST also change the handshake to not claim you are able to do dynamic queries.

In class ConnectionEngine change the statement
if ( responseHeader.getTTL() > 0 && returnHost != Host.LOCAL_HOST &&
queryEngine != null && !queryEngine.areEnoughResultsRouted() )

to

if ( responseHeader.getTTL() > 0 && returnHost != Host.LOCAL_HOST )

This should get queries routed back without the result limit check on its way back from C to A. Since you have not used dynamic query in the first place this check can not work correctly.

At least this is my guss what could be the cause of your problems.

Gregor
__________________
Reply With Quote