TryGhost/Ghost — pull request #1852 by baus (2014-01-05 03:54:33+00:00)
Title: Address race condition when creating users. Addresses #1834

This is a second attempt at preventing multiple users from being created. My previous PR on issue #1834 still had a race condition. I'm pretty sure this doesn't, but it depends on the application rejecting users when their password is empty.

This is more difficult to address than it seems because the correct way to do this is with an atomic operation on the DB, such as a conditional INSERT, but SQLite does not support conditional INSERTs and it if did, it would require bypassing Bookshelf.

I think this this about as close as we can get to solving this issue w/out doing heavy lifting on the data model.

There maybe other places in the application which have similar race conditions which depend on counters in the DB -- for example creating slugs for posts and users.