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]
