Actions
Bug #1733
closedForwarder::setStragglerTimer wrong condition
Start date:
07/03/2014
Due date:
% Done:
100%
Estimated time:
1.00 h
Description
Steps to reproduce:
- start NFD
- create two faces to two different networks that are not interconnected
- register the same prefix toward these two faces
- set broadcast strategy for the prefix
- send Interests continuously at a slow rate; the producer of these Interests is reachable via only one face
- observe nPitEntries counter from
nfd-status
Expected: nPitEntries is relatively stable
Actual: nPitEntries is continuously increasing
Root cause: Forwarder::setStragglerTimer
has a conditional
if (pitEntry->hasUnexpiredOutRecords()) {
NFD_LOG_DEBUG("setStragglerTimer " << pitEntry->getName() <<
" cannot set StragglerTimer when an OutRecord is pending");
return;
}
This condition is wrong.
The straggler timer keeps the PIT entry a "short while" for loop detection and measurement purposes.
The 100ms delay is sufficient for these purposes.
It should not wait for all OutRecords to expire.
To make things worse, due to this condition, the straggler timer is never set again, and the PIT entry would be kept forever.
Updated by Junxiao Shi over 10 years ago
- Description updated (diff)
- Status changed from New to In Progress
Updated by Junxiao Shi over 10 years ago
- Status changed from In Progress to Code review
- % Done changed from 0 to 100
Updated by Alex Afanasyev over 10 years ago
- Status changed from Code review to Closed
Actions