Another nice one... Although ultimately inserts are slow because they touch 
far more nodes than requests do, and they transfer more data.

On Wednesday 19 December 2007 23:25, Robert Hailey wrote:
> 
> I made a commit, but the email didn't make it to the cvs thread  
> (r16740), probably because of a question mark in the log. The diff  
> follows in case it doesn't show up later.
> 
> --
> Robert Hailey
> 
> Index: freenet/node/CHKInsertSender.java
> ===================================================================
> --- freenet/node/CHKInsertSender.java (revision 16739)
> +++ freenet/node/CHKInsertSender.java (revision 16740)
> @@ -290,7 +290,20 @@
>               // Send to next node
> 
>               try {
> -                             next.sendSync(req, this);
> +                             /*
> +                              When using sendSync(), this send can often 
> timeout (it is the  
> first request we are sending to this node).
> +                              -If sendSync blocks here (message queue is 
> full, node down,  
> etc.) it can take up to 10 minutes,
> +                               if this occurs at even two nodes in any given 
> insert (at any  
> point in the path), the entire insert chain
> +                               will fatally timeout.
> +                              -We cannot be informed if sendSync() does 
> timeout. A message  
> will be logged, but this thread will simply continue
> +                                to the waitFor() and spend another timeout 
> period there.
> +                              -The timeout on the waitFor() is 10 seconds 
> (ACCEPTED_TIMEOUT).
> +                              -The interesting case is when this next node 
> is temporarily  
> busy, in which case we might skip a busy node if they
> +                                don't respond in ten seconds 
> (ACCEPTED_TIMEOUT). Or, if the  
> length of the send queue to them is greater than
> +                                ACCEPTED_TIMEOUT, using sendAsync() will 
> skip them before they  
> get the request. This would be a need for retuning
> +                                ACCEPTED_TIMEOUT.
> +                              */
> +                             next.sendAsync(req, null, 0, this);
>                       } catch (NotConnectedException e1) {
>                               if(logMINOR) Logger.minor(this, "Not connected 
> to "+next);
>                               continue;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20071220/72b76dbb/attachment.pgp>

Reply via email to