レコードが更新または作成されているときには、そのレコードをロックして、別の操作によって同時にレコードが更新され、データに矛盾が生じることのないようにしています。
これらのロックは通常数秒間持続し、ロックが解除されると、他の操作は問題のレコードに対して何らかの処理を行うことができます。ただし、ロックを解除するには最大 10 秒間まで待機可能です。それ以上かかる場合はタイムアウトします。
レコードがロックされるタイミングと時間は、実行している操作と作業中のメインレコードによって異なります。Force.com Record Locking Cheatsheet (英語) にはこれに関する詳細情報が記載されており、その内容を熟知していることが強く推奨されます。
レコードのロックを解除する一般的なシナリオ
a. メール-to-ケース
メールがメール-to-ケースによって処理されるとき、メールメッセージオブジェクトまたは関連するオブジェクト (すなわち、親取引先) のトリガは、処理を行うためにそれらのレコードをロックしようと試みます。別のプロセスがこれらのレコードのロックを保持しており、メールの処理が 10 秒以上待機する必要がある場合は、タイムアウトが発生し、このエラーが表示されます。
b. Apex トリガ / API
ToDo に After Insert Apex Trigger があり、一部の処理が行われている間、約 14 秒間、実行されると仮定します。このトリガは ToDo が作成されたときに実行されます。ToDo が作成され、取引先に関連付けられたとき、Salesforce は ToDo が作成される間に親取引先をロックします。これは ToDo の作成中に取引先は更新できないことを意味します。ロックステートメントを削減します。
シナリオ:
そして、2 番目のトランザクションはロックが解除されるまで待機します。ToDo は作成されるまでに約 14 秒かかるためです。ロックは 14 秒間保持されます。2 番目のトランザクション (ユーザー B による操作) は、最大で 10 秒しか待機できないのでタイムアウトします。
このケースでは、ユーザー B の画面には、上記のうちのひとつに類似したエラーが表示されます。本番環境のデータに対して実行される場合、Apex Tests でロックが発生することもあります。
c. Bulk API
Bulk API を介したレコードの Insert/Update は同じ親レコード上に一度に複数の Update が生じる可能性があります。なぜなら、バッチは並列に処理されるためです。例えば、同じタイミングで 2 つのバッチが処理されており、それらが同じ親レコードを指し示すレコードを含んでいる場合、バッチのひとつは 10 秒以内にロックすることができなかった場合に、他のバッチが「unable to lock row」エラーを惹き起こす可能性のある親レコードをロックしようと試みます。
これを防ぐために、次のいずれかを実施することができます:
d. 主従関係
主従関係の主レコードが多くの子レコード (数千) を持っている場合、従レコードを編集する度に、主レコードはロックされるため、同様にこれらのエラーに直面する可能性があります。あなたが持っているより多くの従レコードはユーザーによって編集され、親レコードのロックを惹き起こす可能性が高いです。
トラブルシューティング:
1. エラーに遭遇しているユーザのデバッグログを有効にして、問題を引き起こしているトリガ / フロー / 入力規則の原因を突き止めることができます。
2. 同じオブジェクトで実行されている従属バックグラウンドジョブがないか確認してください。存在する場合は、ジョブを一時停止し、行ロックを削減するアクションを実行してください。
000387767

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.