How to get confirmation that Inserts/Deletes of Contacts using the Bulk API will cause Row Lock errors on the parent Accounts, especially if the # of Contacts is large and there are few parent Accounts?
And what exactly causes the issue on the parent Account?
(we have disabled all processes/flows/triggers) turned off for Accounts and issue still occur.
Is there any some sort of out of the box rollup between Account/Contact that could be the issue.
I have checked the cheatsheet http://resources.docs.salesforce.com/194/0/en-us/sfdc/pdf/record_locking_cheatsheet.pdf
but unable to get much.
-
1I am not sure on the root cause of the issue (except the fact that some kind of race condition happening between updates) but usually I set the Bulk Api mode from Parallel to serial in updates and that has solved my issue – karthikselva Feb 10 '16 at 19:16
Have a read of the Record Locking Cheat Sheet.
Inserting or Updating a Contact will lock the Parent Account, creating a high risk of lock contention. Especially with a parallel bulk API call.
Can you group your Contacts by parent Account?
You might also want to read Managing Lookup Skew in Salesforce to Avoid Record Lock Exceptions. Having a large number of Contact child records on an Account results in "account data skew which in turn causes performance problems".