Recovery: Fixed race condition in file list

The list of files in an active recovery is accessed by multiple threads.
Access was not synchronized, so incorrect file counts and sizes could be
reported. This commit adds synchronization to the affected collections
and primitives.
why do we create a new array of this? what's wrong with the existing code?