Note that generate_user() has its lock