Matthew Toseland wrote:
As I understand it this should only happen every 200ms or so (maybe more
often because of other things happening, but it shouldn't tie up the
CPU). Does it tie up the CPU?
No, it does not appear to be tying up the CPU, but it does appear that at least the two events (for the same peer) included below were 10 ms apart if I read the log format correctly. In any case, every 200 ms would be 5 times a second I believe, which seems to be little bit often based on what I've seen of the problem (messages queues growing into the thousands because of the problem continuing for a long period (looking into this problem is what led me to the no-packets-sent-when-backed-off confusion)).

It does massively flood the logs at NORMAL level. Perhaps the messages could be pruned from three to one per event and/or the log messages could be limited even if the attempts are not?

If I understand correctly, the unack'd send pool is 128 messages(?) in size, but the receive counterpart is 512 messages(?). (It's been a couple days since I looked at that code.)
On Tue, May 16, 2006 at 08:54:56AM -0500, David Sowder (Zothar) wrote:
Matthew Toseland wrote:
What is the stack trace? At what point in PacketSender are we trying to
send the messages, or is it from somewhere else?
Here's a snippet from a stack trace I got after adding the exception to the Logger call: [trimmed for reply]

May 16, 2006 13:50:24:844 (freenet.node.PeerNode, PacketSender thread for 0, NORMAL): Requeueing 83 messages on [EMAIL PROTECTED] May 16, 2006 13:50:24:854 (freenet.node.PeerNode, PacketSender thread for 0, NORMAL): Requeueing 83 messages on [EMAIL PROTECTED]

On Mon, May 15, 2006 at 04:23:05PM -0500, David Sowder (Zothar) wrote:
Matthew Toseland wrote:
Check the stack trace. WouldBlockException is thrown when a peer is so backlogged that we can't allocate a new packet number. So we requeue the
messages we need to send, since we have pulled them off the queue in
order to send them, and we can't send them yet.=

OK, it seems I did understand what's going on and apparently there's not bigger cause than the peer is backlogged, so it looks like I didn't miss anything (which is good).

What do you think of the waiting between queued message send retry attempts idea?

On Sun, May 14, 2006 at 01:32:27PM -0500, David Sowder (Zothar) wrote:

Perhaps we should wait a little bit before trying to resend queued messages? Perhaps the wait time should be proportional to the number of messages queued, up to some threshold (maybe keepalive send frequency)?

According to the source:

public void requeueMessageItems(MessageItem[] messages, int offset, int length, boolean dontLog) {
     // Will usually indicate serious problems

What could cause this?  Failure to get acks from a peer for awhile?



May 14, 2006 17:54:59:874 (freenet.support.LimitedRangeIntByteArrayMap, PacketSender thread for 0, NORMAL): [EMAIL PROTECTED] WOULD BLOCK: lockNeverBlock(47574) - minValue = 47446, maxValue = 47446, maxRange=128 May 14, 2006 17:54:59:874 (freenet.node.FNPPacketMangler, PacketSender thread for 0, NORMAL): Caught freenet.support.WouldBlockException while sending messages, requeueing remaining messages


_______________________________________________
Devl mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Reply via email to