Closed dccurtis closed 6 years ago
Assuming product inserts are working as expected (there could be a bug there) then this is a good example of the race condition around processing multiple report files from the same source at the same time.
For every line item in a cost usage report, we pull the referenced product.
When a batch of line items have been processed we commit the products and all other relevant tables to the database.
The race condition being seen here could come about from the following scenario:
Task 1 starts processing a file. It sees new products that are not yet in the database and puts them on the session.
Task 2 starts processing a file. It sees the same new products that are not yet in the database and puts them on the session.
Task 1 commits to the database.
Task 2 attempts to commit to the database, but it tries to insert the products that were just inserted by task 1, and we get the integrity error in the traceback.
This can likely be solved by using Postgres's ON CONFLICT
clause when inserting.
See #69 for more background on this
Backtrace of situation described in #69.
Setup to reproduce (As of 7/12/18)
AWSNotificationHandler
nise
to force S3 bucket changes and trigger SNS in rapid succession. You may get lucky and hit this