Doing upserts as a batch was causing deadlocks in production when there were
overlapping tuples being upserted in different threads in different orders.
To prevent this, upsert each row individually. Of the many ways we may attempt
to solve this individually upserting seemed to me to be the simplest approach.
Doing upserts as a batch was causing deadlocks in production when there were overlapping tuples being upserted in different threads in different orders.
A script to reproduce this can be found here: https://gist.github.com/drsnyder/6466651.
To prevent this, upsert each row individually. Of the many ways we may attempt to solve this individually upserting seemed to me to be the simplest approach.
/cc @loganlinn @frankfarmer