Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed random failure of creating users in populatedb #4769

Merged

Conversation

NyanKiyoshi
Copy link
Member

Randomly, even on an empty database, populatedb could crash when trying to create an existing user twice.

  File "/develop/saleor/saleor/core/management/commands/populatedb.py", line 103, in handle
    for msg in create_users(20):
  File "/develop/saleor/saleor/core/utils/random_data.py", line 513, in create_users
    user = create_fake_user()
  File "/develop/saleor/saleor/core/utils/random_data.py", line 360, in create_fake_user
    password="password",
  File "/develop/saleor/saleor/account/models.py", line 116, in create_user
    user.save()
  File "/develop/saleor-venv/lib/python3.7/site-packages/django/contrib/auth/base_user.py", line 66, in save
    super().save(*args, **kwargs)
  File "/develop/saleor-venv/lib/python3.7/site-packages/django/db/models/base.py", line 741, in save
    force_update=force_update, update_fields=update_fields)
  File "/develop/saleor-venv/lib/python3.7/site-packages/django/db/models/base.py", line 779, in save_base
    force_update, using, update_fields,
  File "/develop/saleor-venv/lib/python3.7/site-packages/django/db/models/base.py", line 870, in _save_table
    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
...
  File "/develop/saleor-venv/lib/python3.7/site-packages/django/db/utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/develop/saleor-venv/lib/python3.7/site-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
django.db.utils.IntegrityError: duplicate key value violates unique constraint "userprofile_user_email_key"
DETAIL:  Key (email)=(michael.taylor@example.com) already exists.

Screenshots

Pull Request Checklist

  1. Privileged views and APIs are guarded by proper permission checks.
  2. All visible strings are translated with proper context.
  3. All data-formatting is locale-aware (dates, numbers, and so on).
  4. Database queries are optimized and the number of queries is constant.
  5. Database migration files are up to date.
  6. The changes are tested.
  7. GraphQL schema and type definitions are up to date.
  8. Changes are mentioned in the changelog.

Copy link

Here is the report for 9ff0f90 (NyanKiyoshi/saleor @ fix/populatedb/skip-existing-emails)
Base comparison is 3742319.

No differences were found. (click me)

# api.benchmark checkout
  test name                                  	left count 	right count	duplicate count
  -------------------------------------------	-----------	-----------	---------------
  add billing address to checkout            	         38	         38	             20
  add shipping to checkout                   	          7	          7	              0
  checkout payment charge                    	         14	         14	              0
  complete checkout                          	          6	          6	              0
  create checkout                            	         52	         52	             24

# api.benchmark homepage
  test name                                  	left count 	right count	duplicate count
  -------------------------------------------	-----------	-----------	---------------
  retrieve main menu                         	          5	          5	              0
  retrieve product list                      	          4	          4	              0
  retrieve secondary menu                    	          5	          5	              0
  retrieve shop                              	          2	          2	              0

# api.benchmark product
  test name                                  	left count 	right count	duplicate count
  -------------------------------------------	-----------	-----------	---------------
  product details                            	         15	         15	              3
  retrieve product attributes                	         13	         13	              2

# api.benchmark variant
  test name                                  	left count 	right count	duplicate count
  -------------------------------------------	-----------	-----------	---------------
  retrieve variant list                      	         18	         18	              8

# api product sorting attributes
  test name                                  	left count 	right count	duplicate count
  -------------------------------------------	-----------	-----------	---------------
  sort product not having attribute data     	         21	         21	              0

@codecov
Copy link

codecov bot commented Sep 26, 2019

Codecov Report

Merging #4769 into master will not change coverage.
The diff coverage is n/a.

Impacted file tree graph

@@           Coverage Diff           @@
##           master    #4769   +/-   ##
=======================================
  Coverage   91.12%   91.12%           
=======================================
  Files         343      343           
  Lines       20401    20401           
  Branches     1930     1930           
=======================================
  Hits        18591    18591           
  Misses       1272     1272           
  Partials      538      538

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 3742319...9ff0f90. Read the comment docs.

@maarcingebala maarcingebala merged commit 0397b33 into saleor:master Sep 27, 2019
@NyanKiyoshi NyanKiyoshi deleted the fix/populatedb/skip-existing-emails branch September 27, 2019 10:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants