-
Notifications
You must be signed in to change notification settings - Fork 5.3k
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 inconsistent beat scheduling and compatibility with db scheduler #10196
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…10185) This fixes the following bugs: - `tick()` could decide to never schedule anything else than `send-sale-toggle-notifications` if `send-sale-toggle-notifications` doesn't return `is_due = False` (stuck forever until beat restart or a `is_due = True`) - `tick()` was sometimes scheduling other schedulers such as observability to be ran every 5m instead of every 20s - `is_due()` from `send-sale-toggle-notifications` was being invoked every 5s on django-celery-beat instead of every 60s - `send-sale-toggle-notifications` would crash on django-celery-beat with `Cannot convert schedule type <saleor.core.schedules.sale_webhook_schedule object at 0x7fabfdaacb20> to model` This fixes both the `shelve` and the database backends. Users should be able to add compatibility to other Celery beat backends using the same flow. Tickets are still pending creation to notify Celery about the issues.
Here is the report for 254faad (saleor:port/3.5/fix-celery-beat) No differences were found.
# saleor.graphql.accountbenchmark account
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
addresses for federation query count 9 9 2
customers query 48 48 0
delete staff members 36 36 1
query staff user 18 18 3
staff create 23 23 3
staff update groups and permissions 35 35 5
users for federation query count 8 8 3
# saleor.graphql.accountbenchmark permission group
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
groups for federation query count 5 5 2
permission group create 21 21 2
permission group delete 22 22 3
permission group query 7 7 0
permission group update 35 35 1
permission group update remove users with manage staff 29 29 3
# saleor.graphql.appbenchmarks app extensions
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
app extensions 15 15 0
app extensions with filter[filter0] 14 14 0
app extensions with filter[filter1] 10 10 0
app extensions with filter[filter2] 14 14 0
app extensions with filter[filter3] 10 10 0
# saleor.graphql.appbenchmarks apps
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
apps for federation query count 9 9 3
# saleor.graphql.attributebenchmark attribute
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
attribute translation 6 6 0
attribute value translation 26 26 0
query attribute 6 6 0
query attributes 8 8 0
# saleor.graphql.channelbenchmark channel
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
channels query 5 5 0
# saleor.graphql.channeltest channel update mutations
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
channel update mutation remove warehouse 35 35 6
# saleor.graphql.checkoutbenchmark checkout mutations
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
add billing address to checkout 46 46 4
add checkout lines 55 55 4
add checkout lines with external shipping 90 90 13
add checkout lines with reservations 118 118 37
add delivery to checkout 59 59 8
add shipping to checkout 63 63 8
checkout email update 26 26 0
checkout payment charge 40 40 15
checkout shipping address update 65 65 11
checkout voucher code 73 73 11
complete checkout 147 147 24
complete checkout preorder 161 161 33
complete checkout with digital line 207 207 50
complete checkout with out of stock webhook 149 149 24
complete checkout with single line 149 149 24
create checkout 69 69 10
create checkout for cc 63 63 8
create checkout with reservations 118 118 20
customer complete checkout 162 162 28
customer complete checkout for cc 160 160 28
update checkout lines 49 49 4
update checkout lines with reservations 124 124 49
# saleor.graphql.checkoutbenchmark homepage
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
user checkout details 42 42 3
# saleor.graphql.discountbenchmark sales
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
sales query with channel slug 19 19 0
sales query withot channel slug 18 18 0
# saleor.graphql.discountbenchmark vouchers
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
vouchers query with channel slug 19 19 0
vouchers query withot channel slug 18 18 0
# saleor.graphql.giftcardbenchmark gift card mutations
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
create never expiry gift card 28 28 4
gift card bulk activate by staff 16 16 3
update gift card 36 36 4
# saleor.graphql.giftcardbenchmark gift card queries
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
filter gift cards by products 14 14 3
filter gift cards by tags 12 12 3
filter gift cards by used by user 13 13 3
query gift card details 14 14 3
query gift cards 12 12 3
# saleor.graphql.orderbenchmark fulfillment
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
fulfillment query 9 9 0
# saleor.graphql.orderbenchmark fulfillment refund and return products
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
fulfillment refund products order lines 56 56 2
fulfillment return products order lines 108 108 12
# saleor.graphql.orderbenchmark order
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
staff multiple draft orders 542 542 436
staff multiple orders 162 162 86
staff order details 48 48 8
user order details 46 46 9
# saleor.graphql.orderbenchmark order fulfill
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
order fulfill 19 19 3
order fulfill with gift cards 19 19 3
# 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 18 6
query page types 25 25 12
# saleor.graphql.paymentbenchmark payment transactions
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
payment transactions 49 49 20
# saleor.graphql.productbenchmark category
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
categories children 3 3 0
categories for federation query count 3 3 0
category delete 86 86 16
category view 26 26 1
# saleor.graphql.productbenchmark collection
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
collection add products 36 36 6
collection bulk delete 47 47 8
collection view 6 6 0
collections for federation query count 7 7 2
create collection 36 36 5
delete collection 39 39 7
remove products from collection 33 33 6
retrieve collection channel listings 5 5 0
# saleor.graphql.productbenchmark homepage
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
report product sales 10 10 3
retrieve product list 4 4 0
# saleor.graphql.productbenchmark product
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
filter products by attributes 9 9 0
filter products by boolean attributes 19 19 0
filter products by gift card 11 11 1
filter products by numeric attributes 18 18 0
product create 73 73 8
product details 33 33 0
product translations 5 5 0
products for federation query count 6 6 2
products media for federation query count 3 3 0
products types for federation query count 2 2 0
retrieve channel listings 17 17 0
retrieve product attributes 9 9 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 51 51 11
# saleor.graphql.productbenchmark product variant channel listing update
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
variant channel listing update 45 45 3
# saleor.graphql.productbenchmark variant
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
product variant bulk create 66 66 3
product variant create 80 80 5
products variants for federation query count 6 6 2
retrieve variant list 29 29 2
update product variant 78 78 9
# saleor.graphql.productbenchmark variant stocks
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
product variants stocks create 26 26 4
product variants stocks create with single webhook called 25 25 4
product variants stocks delete 27 27 4
product variants stocks delete with out of stock webhook many calls 23 23 3
product variants stocks update 28 28 4
query product variants stocks 10 10 0
# saleor.graphql.producttest product sorting attributes
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
sort product not having attribute data 23 23 0
# saleor.graphql.shippingbenchmark shipping methods
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
vouchers query with channel slug 9 9 0
vouchers query without channel slug 9 9 0
# saleor.graphql.shopbenchmark homepage
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
retrieve shop 4 4 0
# saleor.graphql.warehousebenchmark stocks
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
stocks query 5 5 0
# saleor.graphql.webhookbenchmark webhook events
test name left count right count duplicate count
------------------------------------------------------------------------ ----------- ----------- ---------------
webhooks 9 9 0
|
Codecov Report
@@ Coverage Diff @@
## 3.5 #10196 +/- ##
======================================
Coverage ? 93.04%
======================================
Files ? 624
Lines ? 48261
Branches ? 8145
======================================
Hits ? 44903
Misses ? 2170
Partials ? 1188 |
maarcingebala
approved these changes
Jul 19, 2022
IKarbowiak
approved these changes
Jul 19, 2022
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Ports #10185 onto 3.5
This fixes the following bugs:
tick()
could decide to never schedule anything else thansend-sale-toggle-notifications
ifsend-sale-toggle-notifications
doesn't returnis_due = False
(stuck forever until beat restart or ais_due = True
)tick()
was sometimes scheduling other schedulers such as observability to be ran every 5m instead of every 20sis_due()
fromsend-sale-toggle-notifications
was being invoked every 5s on django-celery-beat instead of every 60ssend-sale-toggle-notifications
would crash on django-celery-beat withCannot convert schedule type <saleor.core.schedules.sale_webhook_schedule object at 0x7fabfdaacb20> to model
This fixes both the
shelve
and the database backends. Users should be able to add compatibility to other Celery beat backends using the same flow.Tickets are still pending creation to notify Celery about the issues.
I want to merge this change because...
Impact
Pull Request Checklist