Why do we need to mark availableBackups as volatile since there is  a synchronized block?