View Issue Details

IDProjectCategoryView StatusLast Update
0001682GNUnettransport servicepublic2011-06-10 11:09
ReporterChristian Grothoff Assigned ToMatthias Wachs  
PriorityimmediateSeverityblockReproducibilityrandom
Status closedResolutionfixed 
Summary0001682: gnunet-service-transport does not call GNUNET_SERVER_receive_done in a timely fashion
DescriptionOddly enough, the warning generated by util goes "away" after a while (resets to 0s), so either the service *did* eventually (after an undue time) call the receive_done function or this even causes a disconnect.

I'm also not sure what the transport's business with messages of type 82 is to begin with...


I can (often) reproduce this by running the perf_gnunet_service_fs_p2p_trust test case, which then ultimately fails because the last of the 3 downloads takes a loooong time (The testcase occasionally passes as this bug only appears at random). Also, P2P communication (if this is the cause for the failure) does not appear to be entirely down since some messages still get through, but since this is about 3 peers, those may be taking a different path.
Additional InformationMay 31 16:11:03 transport-27601 WARNING Processing code for message of type 82 did not call GNUNET_SERVER_receive_done after 18066ms
May 31 16:11:04 transport-27601 WARNING Processing code for message of type 82 did not call GNUNET_SERVER_receive_done after 19070ms
May 31 16:11:05 transport-27601 WARNING Processing code for message of type 82 did not call GNUNET_SERVER_receive_done after 20074ms
May 31 16:11:12 transport-27556 WARNING Processing code for message of type 82 did not call GNUNET_SERVER_receive_done after 1001ms
May 31 16:11:13 transport-27556 WARNING Processing code for message of type 82 did not call GNUNET_SERVER_receive_done after 2006ms
TagsNo tags attached.

Activities

Christian Grothoff

2011-06-06 13:54

manager   ~0004340

The TCP plugin passes payload directly to the transport service, which then can return a delay (!) for reading (push back) if the other side is sending data faster than we'd like. The TCP plugin then uses the 'delayed_done' function to perform the call to 'GNUNET_SERVER_receive_done' with the specified delay.

This is totally consistent with the warning we get here. The only question now is why the *sender* (the other peer) gets so close (and/or beyond) the agreed-upon quota to trigger this push back in the first place.

Christian Grothoff

2011-06-06 13:54

manager   ~0004341

Added new API call to disable the warning IF we delay intentionally (as done here by TCP). Real issue is that somehow the quota is reduced to 1kb/s for the testcase, causing excessive delays. But that's a different bug.

Issue History

Date Modified Username Field Change
2011-05-31 18:17 Christian Grothoff New Issue
2011-05-31 18:17 Christian Grothoff Status new => assigned
2011-05-31 18:17 Christian Grothoff Assigned To => Matthias Wachs
2011-06-06 13:54 Christian Grothoff Note Added: 0004340
2011-06-06 13:54 Christian Grothoff Note Added: 0004341
2011-06-06 13:54 Christian Grothoff Status assigned => resolved
2011-06-06 13:54 Christian Grothoff Resolution open => fixed
2011-06-10 11:09 Christian Grothoff Status resolved => closed