Retry with unique username both on PUT and POST.
This commit is contained in:
parent
fb020ae4b4
commit
0daaefdcc3
@ -70,6 +70,8 @@ def validate_create_user(blender_id_user_id, token, oauth_subclient_id):
|
|||||||
# Store the user info in MongoDB.
|
# Store the user info in MongoDB.
|
||||||
db_user = find_user_in_db(blender_id_user_id, user_info)
|
db_user = find_user_in_db(blender_id_user_id, user_info)
|
||||||
|
|
||||||
|
r = {}
|
||||||
|
for retry in range(5):
|
||||||
if '_id' in db_user:
|
if '_id' in db_user:
|
||||||
# Update the existing user
|
# Update the existing user
|
||||||
attempted_eve_method = 'PUT'
|
attempted_eve_method = 'PUT'
|
||||||
@ -81,15 +83,16 @@ def validate_create_user(blender_id_user_id, token, oauth_subclient_id):
|
|||||||
r, _, _, status = put_internal('users', remove_private_keys(db_user),
|
r, _, _, status = put_internal('users', remove_private_keys(db_user),
|
||||||
_id=db_id, **etag)
|
_id=db_id, **etag)
|
||||||
if status == 422:
|
if status == 422:
|
||||||
log.error('Status %i trying to PUT user, should not happen! %s',
|
log.error('Status %i trying to PUT user %s with values %s, should not happen! %s',
|
||||||
status, r)
|
status, db_id, remove_private_keys(db_user), r)
|
||||||
else:
|
else:
|
||||||
# Create a new user, retry for non-unique usernames.
|
# Create a new user, retry for non-unique usernames.
|
||||||
attempted_eve_method = 'POST'
|
attempted_eve_method = 'POST'
|
||||||
r = {}
|
|
||||||
for retry in range(5):
|
|
||||||
r, _, _, status = post_internal('users', db_user)
|
r, _, _, status = post_internal('users', db_user)
|
||||||
|
|
||||||
|
db_id = r['_id']
|
||||||
|
db_user.update(r) # update with database/eve-generated fields.
|
||||||
|
|
||||||
if status == 422:
|
if status == 422:
|
||||||
# Probably non-unique username, so retry a few times with different usernames.
|
# Probably non-unique username, so retry a few times with different usernames.
|
||||||
log.info('Error creating new user: %s', r)
|
log.info('Error creating new user: %s', r)
|
||||||
@ -99,15 +102,12 @@ def validate_create_user(blender_id_user_id, token, oauth_subclient_id):
|
|||||||
db_user['username'] = authentication.make_unique_username(db_user['email'])
|
db_user['username'] = authentication.make_unique_username(db_user['email'])
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Saving was successful.
|
# Saving was successful, or at least didn't break on a non-unique username.
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
log.error('Unable to create new user %s: %s', db_user, r)
|
log.error('Unable to create new user %s: %s', db_user, r)
|
||||||
return abort(500)
|
return abort(500)
|
||||||
|
|
||||||
db_id = r['_id']
|
|
||||||
db_user.update(r) # update with database/eve-generated fields.
|
|
||||||
|
|
||||||
if status not in (200, 201):
|
if status not in (200, 201):
|
||||||
log.error('internal response from %s to Eve: %r %r', attempted_eve_method, status, r)
|
log.error('internal response from %s to Eve: %r %r', attempted_eve_method, status, r)
|
||||||
return abort(500)
|
return abort(500)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user