bdgranger commented on issue #9274:
URL: https://github.com/apache/trafficserver/issues/9274#issuecomment-1382054431

   We have determined that the issue is a mismatch between the way dir_probe 
works with last_collision set and how dir_insert adds new entries to the bucket 
list.
   
   dir_probe always starts at the bucket head and skips past any collisions 
until it reaches last_collision, and then continues the probe from there. 
dir_insert (likely as an optimization because of the singly-linked list nature 
of the bucket list) always inserts new entries immediately after the bucket 
head. So unless the last_collision is the bucket head, any new entries will be 
skipped and never found by the rww readers.
   
   After discussion with @SolidWallOfCode on the slack channel, it seems the 
simplest solution to this issue will be to have dir_insert always insert at the 
end of the list so the new entries will not be skipped. This will entail a walk 
of the entire list on each call to dir_insert, but these lists should be 
completely in memory, and the lists should be relatively short (the longest 
list I have seen so far is 6 entries), so this shouldn't be too much of a 
performance hit.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to