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

fix DatabaseError on checkoutDeliveryMethodUpdate #16574

Closed
wants to merge 6 commits into from

Conversation

Air-t
Copy link
Contributor

@Air-t Air-t commented Aug 21, 2024

I want to merge this change because it fixes a DatabaseError when the checkoutComplete mutation locks the ' Checkoutinstance while someone tries to modifyCheckout` content with another mutation.

Fixes: https://linear.app/saleor/issue/SHOPX-635/failing-remove-voucher-from-checkout-when-nothing-changed

Impact

  • New migrations
  • New/Updated API fields or mutations
  • Deprecated API fields or mutations
  • Removed API types, fields, or mutations

Docs

  • Link to documentation:

Pull Request Checklist

  • Privileged queries and mutations are either absent or guarded by proper permission checks
  • Database queries are optimized and the number of queries is constant
  • Database migrations are either absent or optimized for zero downtime
  • The changes are covered by test cases
  • All new fields/inputs/mutations have proper labels added (ADDED_IN_X, PREVIEW_FEATURE, etc.)
  • All migrations have proper dependencies
  • All indexes are added concurrently in migrations
  • All RunSql and RunPython migrations have revert option defined

@Air-t Air-t self-assigned this Aug 21, 2024
@Air-t Air-t force-pushed the fix-database-error-on-checkout-delivery-update branch from be1e233 to bc73241 Compare August 21, 2024 05:57
@Air-t Air-t force-pushed the fix-database-error-on-checkout-delivery-update branch from bc73241 to 0544731 Compare August 21, 2024 06:01
@db-queries
Copy link

db-queries bot commented Aug 21, 2024

Here is the report for e7e64c4 (saleor:fix-database-error-on-checkout-delivery-update)
Base comparison is a76e77e.

Found 118 differences! (click me)

# saleor.graphql.accountbenchmark account
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- addresses for federation query count                                    	          9	         11	              2
- customers query                                                         	         51	         53	              0
- delete staff members                                                    	         40	         42	              0
- query staff user                                                        	         22	         24	              3
- staff create                                                            	         22	         24	              3
- staff update groups and permissions                                     	         35	         37	              6
- users for federation query count                                        	          8	         10	              3

# saleor.graphql.accountbenchmark permission group
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  groups for federation query count                                       	          3	          3	              1
- permission group create                                                 	         24	         26	              0
- permission group delete                                                 	         29	         31	              3
- permission group query                                                  	         14	         16	              0
- permission group update                                                 	         43	         45	              2
- permission group update remove users with manage staff                  	         35	         37	              3

# saleor.graphql.appbenchmarks app extensions
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- app extensions                                                          	         25	         27	             10
- app extensions with filter[filter0]                                     	         24	         26	             10
- app extensions with filter[filter1]                                     	         12	         14	              2
- app extensions with filter[filter2]                                     	         24	         26	             10
- app extensions with filter[filter3]                                     	         12	         14	              2

# saleor.graphql.appbenchmarks apps
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- apps for federation query count                                         	          9	         11	              3
- apps with tokens and webhooks                                           	          9	         11	              0

# saleor.graphql.attributebenchmark attribute
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- attribute translation                                                   	          6	          8	              0
- attribute value translation                                             	         20	         22	              0
- query attribute                                                         	          6	          8	              0
- query attributes                                                        	          8	         10	              0

# saleor.graphql.channelbenchmark channel
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- channels query                                                          	          5	          7	              0

# saleor.graphql.channelmutations channel update
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- channel update mutation remove warehouse                                	         39	         41	              6

# saleor.graphql.checkoutbenchmark checkout mutations
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- add billing address to checkout                                         	         68	         70	              7
  add checkout lines                                                      	         97	         97	             16
- add checkout lines catalogue discount applies                           	        194	        196	             16
- add checkout lines gift discount applies                                	        156	        158	             24
- add checkout lines multiple catalogue discount applies                  	        209	        211	             21
- add checkout lines order discount applies                               	        170	        172	             19
  add checkout lines with external shipping                               	        186	        186	             74
- add checkout lines with reservations                                    	        197	        199	             78
- add delivery to checkout                                                	         85	         87	             14
- add shipping to checkout                                                	         86	         88	             14
- checkout customer note update                                           	         48	         50	              4
+ checkout email update                                                   	         47	         46	              3
  checkout payment charge                                                 	         61	         61	             19
- checkout shipping address update                                        	         80	         82	              9
  checkout voucher code                                                   	         91	         91	             15
+ complete checkout                                                       	        246	        218	             66
+ complete checkout preorder                                              	        241	        207	             62
+ complete checkout with digital line                                     	        284	        228	             62
+ complete checkout with out of stock webhook                             	        248	        220	             66
+ complete checkout with single line                                      	        248	        220	             66
  create checkout                                                         	         72	         72	              5
- create checkout with gift promotion                                     	        109	        111	             14
- create checkout with order promotion                                    	         94	         96	              5
  create checkout with reservations                                       	        163	        163	             37
+ customer complete checkout                                              	        259	        231	             72
+ customer complete checkout for cc                                       	        234	        208	             65
  update checkout lines                                                   	         87	         87	             15
- update checkout lines with reservations                                 	        203	        205	             90

# saleor.graphql.checkoutbenchmark checkouts
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- staff multiple checkouts                                                	          6	          8	              0

# saleor.graphql.checkoutbenchmark homepage
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- user checkout details                                                   	         57	         59	              5
- user checkout details with tax app                                      	         89	         91	             33

# saleor.graphql.discountbenchmark promotion create
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- promotion create                                                        	         23	         25	              1
- promotion create order promotion                                        	         37	         39	              7

# saleor.graphql.discountbenchmark promotion delete
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- gift promotion delete                                                   	         25	         27	              1
- promotion delete                                                        	         30	         32	              1

# saleor.graphql.discountbenchmark promotion rule create
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- promotion rule create                                                   	         23	         25	              1
- promotion rule create gift                                              	        134	        136	              7

# saleor.graphql.discountbenchmark promotion rule delete
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- promotion rule delete                                                   	         23	         25	              0

# saleor.graphql.discountbenchmark promotion rule update
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- promotion rule update                                                   	         38	         40	              0

# saleor.graphql.discountbenchmark promotion update
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- promotion update                                                        	         16	         18	              0

# saleor.graphql.discountbenchmark promotions
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- promotions querytest promotions query                                   	          9	         11	              0

# saleor.graphql.discountbenchmark sales
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- sales query with channel slug                                           	          9	         11	              0
- sales query without channel slug                                        	          7	          9	              0

# saleor.graphql.discountbenchmark voucher code bulk delete
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- voucher code bulk delete queries                                        	         20	         22	              3

# saleor.graphql.discountbenchmark vouchers
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- vouchers query with channel slug                                        	         20	         22	              0
- vouchers query withot channel slug                                      	         19	         21	              0

# saleor.graphql.giftcardbenchmark gift card mutations
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- create never expiry gift card                                           	         27	         29	              4
- gift card bulk activate by staff                                        	         15	         17	              3
- update gift card                                                        	         35	         37	              4

# saleor.graphql.giftcardbenchmark gift card queries
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- filter gift cards by products                                           	         14	         16	              3
- filter gift cards by tags                                               	         12	         14	              3
- filter gift cards by used by user                                       	         13	         15	              3
- query gift card details                                                 	         14	         16	              3
- query gift cards                                                        	         12	         14	              3

# saleor.graphql.orderbenchmark fulfillment
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- fulfillment query                                                       	          6	          8	              0

# saleor.graphql.orderbenchmark fulfillment refund and return products
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
+ fulfillment refund products order lines                                 	         63	         50	              0
+ fulfillment return products order lines                                 	        105	         92	              3

# saleor.graphql.orderbenchmark order
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- staff multiple draft orders                                             	          7	          9	              0
- staff multiple orders                                                   	          7	          9	              0
- staff order details                                                     	         54	         55	              7
- user order details                                                      	         51	         52	              8

# saleor.graphql.orderbenchmark order bulk create
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- order bulk create                                                       	         19	         21	              2

# saleor.graphql.orderbenchmark order fulfill
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
+ order fulfill                                                           	         17	         15	              0
+ order fulfill with gift cards                                           	         17	         15	              0

# saleor.graphql.orderbenchmark order lines create
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- order lines create                                                      	         96	         98	             17
- order lines create variants on promotion                                	        157	        159	             22

# saleor.graphql.pagebenchmark page type
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  page types for federation query count                                   	          3	          3	              0
- query page type                                                         	         18	         20	              6
- query page types                                                        	         25	         27	             12

# saleor.graphql.paymentbenchmark payment transactions
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- payment transactions                                                    	         54	         56	             20

# saleor.graphql.productbenchmark category
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  categories children                                                     	          4	          4	              1
  categories for federation query count                                   	          3	          3	              0
- category delete                                                         	         30	         32	              3
  category view                                                           	         28	         28	              1

# saleor.graphql.productbenchmark collection
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- collection add products                                                 	         22	         24	              5
- collection bulk delete                                                  	         27	         29	              4
  collection view                                                         	          7	          7	              0
  collections for federation query count                                  	          4	          4	              1
- create collection                                                       	         23	         25	              6
- delete collection                                                       	         26	         28	              5
- remove products from collection                                         	         19	         21	              5
- retrieve collection channel listings                                    	          5	          7	              0

# saleor.graphql.productbenchmark homepage
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- report product sales                                                    	         10	         12	              3
  retrieve product list                                                   	          4	          4	              0

# saleor.graphql.productbenchmark product
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  filter products by attributes                                           	          7	          7	              0
  filter products by boolean attributes                                   	         14	         14	              0
- filter products by gift card                                            	         12	         14	              1
  filter products by numeric attributes                                   	         13	         13	              0
- product create                                                          	         43	         45	              3
+ product details                                                         	         41	         40	              2
  product translations                                                    	          5	          5	              0
  products for federation query count                                     	          6	          6	              2
  products media for federation query count                               	          5	          5	              0
  products types for federation query count                               	          2	          2	              0
- retrieve channel listings                                               	         21	         23	              0
  retrieve product attributes                                             	          8	          8	              0
  retrieve product images                                                 	          4	          4	              0
  retrieve product media                                                  	          4	          4	              0
  retrive products with product types and attributes                      	          7	          7	              0
- update product                                                          	         57	         59	              4

# saleor.graphql.productbenchmark product variant channel listing update
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- variant channel listing update                                          	         35	         37	              3

# saleor.graphql.productbenchmark variant
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- product variant bulk create                                             	         45	         47	              1
- product variant create                                                  	         61	         63	              3
  products variants for federation query count                            	          6	          6	              2
  retrieve variant list                                                   	         34	         34	              1
- update product variant                                                  	         64	         66	              7

# saleor.graphql.productbenchmark variant stocks
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- product variants stocks create                                          	         27	         29	              4
- product variants stocks create with single webhook called               	         26	         28	              4
- product variants stocks delete by id                                    	         28	         30	              4
- product variants stocks delete by sku                                   	         28	         30	              4
- product variants stocks delete with out of stock webhook many calls     	         24	         26	              3
- product variants stocks update by sku                                   	         27	         29	              4
- product variants stocks update byid                                     	         27	         29	              4
- query product variants stocks                                           	         10	         12	              0

# saleor.graphql.producttest product sorting attributes
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  sort product not having attribute data                                  	         20	         20	              0

# saleor.graphql.shippingbenchmark shipping methods
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- vouchers query with channel slug                                        	          7	          9	              0
- vouchers query without channel slug                                     	          7	          9	              0

# saleor.graphql.shippingbenchmark shipping zones
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- shipping zones query                                                    	          6	          8	              0

# saleor.graphql.shopbenchmark homepage
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  retrieve shop                                                           	          2	          2	              0

# saleor.graphql.warehousebenchmark stock bulk update
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- stocks bulk update queries count                                        	         31	         33	              6

# saleor.graphql.warehousebenchmark stocks
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- stocks query                                                            	          5	          7	              0

# saleor.graphql.webhookbenchmark webhook events
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
- webhooks                                                                	          6	          8	              0

# saleor.orderbenchmark fetch order prices
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  fetch order prices catalogue discount                                   	         51	         51	              7
  fetch order prices multiple catalogue discounts                         	        115	        115	             21

# saleor.ordertest fetch
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  fetch draft order lines info                                            	         21	         21	              1

@Air-t Air-t requested review from korycins and fowczarek August 21, 2024 10:47
Copy link

codecov bot commented Aug 21, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 94.16%. Comparing base (64d413d) to head (e7e64c4).
Report is 21 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #16574      +/-   ##
==========================================
+ Coverage   94.11%   94.16%   +0.04%     
==========================================
  Files         938      946       +8     
  Lines       73821    74189     +368     
  Branches     8770    10996    +2226     
==========================================
+ Hits        69479    69860     +381     
+ Misses       2773     2759      -14     
- Partials     1569     1570       +1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@Air-t Air-t force-pushed the fix-database-error-on-checkout-delivery-update branch from 5d68cdb to 424ad5f Compare August 26, 2024 13:32
saleor/checkout/models.py Outdated Show resolved Hide resolved
saleor/checkout/utils.py Outdated Show resolved Hide resolved
fowczarek
fowczarek previously approved these changes Sep 3, 2024
saleor/checkout/utils.py Outdated Show resolved Hide resolved
saleor/checkout/utils.py Outdated Show resolved Hide resolved
kadewu
kadewu previously approved these changes Sep 3, 2024
saleor/checkout/utils.py Outdated Show resolved Hide resolved
@IKarbowiak IKarbowiak dismissed stale reviews from kadewu and fowczarek via 4ac044c September 4, 2024 13:04
@IKarbowiak
Copy link
Member

On hold for now.

@IKarbowiak IKarbowiak marked this pull request as draft September 5, 2024 10:53
@maarcingebala
Copy link
Member

Closing as there is no activity, please reopen if needed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants