On Aug 29, 2013, at 1:44 PM, Doug Lea <d...@cs.oswego.edu> wrote: > On 08/28/2013 09:13 AM, Peter Levart wrote: > >> It seems that the iteration can traverse through the same tables multiple >> times >> (back and forth) by following ForwardingNode.nextTable links. Aren't >> nextTable >> links supposed to be only in "forward" direction, leading to from smaller to >> larger tables? > > They aren't required to be -- to preserve nonblockingness of traversal, > they can revert to old versions of table. This is legal but disconcerting > and surprising. I now think that giving up on pure non-blockingness > (only in the case of concurrent resizes) and helping to transfer > (which can block), thus forcing monotonicity, is a better policy.
OK. > An update is forthcoming. (Thanks to Paul for finding a use case > leading to this better policy!) > I can't take credit for that. The test code i pasted was slightly modified version of a JDK test written a while ago by Martin and which has recently been intermittently failing. I just tweaked that test to increase the probability of failure. Paul.