In this chapter, we learnt that Apex is very different from other programming languages when it comes to handling concurrency issues. Due to these differences, we cannot use many concurrent design patterns that are accepted by the industry, in Apex. In the active object design pattern, we have used the For Update
SOQL clause to achieve a lock on a record. The standard Salesforce user interface is concurrency safe for different users but not for the same user. However, Apex is not at all concurrency safe, and we need to take extra steps to avoid these issues.
The following are the key points of our example as discussed earlier:
For Update
SOQL clause to lock a record in advance.For Update
is that if the execution takes more than 10 seconds, then other waiting processes trying to get the same record will end up with the Unable to lock record
error.