I recently leant the hazard pointer algorithm and then check how does WT use them.In a normal (as many articles), during the write path, there is a copy-on-update and use a retired-list to record the old copies so that they can be scanned and reclaim later.
and another questions is: suppose 1 session can access 1 page at most at the same time, but I see the HP list is initialized to 250 and may be increase later. why it is necessary? Per my understand it just need be a 1 size array and no need to grow.