Created attachment 25608 [details] source code patch with augmented junit The StorageResolver creates an iterator once and always returns the same iterator afterwards. After the iterator is traversed once, it will always appear empty. Even if the implementation would be changed to reset the iterator to the beginning, the single iterator instance approach will never be thread-safe. To reproduce use the junit in attachment. The solution is to return a new iterator each time. Since the methods StorageResolver.hasNext() and StorageResolver.next() cannot use this solution, they have been marked deprecated. The KeyResolvers have been changed to call StorageResolver.getIterator() instead. This patch assumes the patch in Bug 49456 has already been applied.
Patch applied, thanks. Colm.