Address race condition when creating users. Addresses #1834 #1852
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.