I understand that the cause of the bug was the `putIfAbsent` within the transactional boundary, so if there was a transaction failure the created WorkspaceCache instance was not cleaned up. I was just looking for confirmation as to why the code can now call `put` rather than `putIfAbsent`.