Passive Concurrency
You may choose to rely on passive concurrency for resolving update conflicts if your application performs single-record read and update operations while not inside a transaction or from within a concurrent transaction. Passive concurrency is applied automatically by the MicroKernel; it requires no explicit instructions from the application or the user.
With passive concurrency, the MicroKernel allows a client to read a record without applying any lock bias for the operation; if a second client changes the record between the time the first client reads it and the time the first client attempts to update or delete it, the MicroKernel returns Status Code 80. In this situation, the modification that the first client initiates is based on an outdated image of the record. Therefore, the first client must read the record again before performing the update or delete operation.
Passive concurrency allows developers to move applications directly from a single-user to a multi-user environment with only minor modifications.
Table 36 and Table 37 show how two clients interact when using passive concurrency: non-transactionally and from within a concurrent transaction.
*Note: Even though client 2 reads record A after client 1 has already executed the update operation, the MicroKernel correctly detects a conflict error in Step 7. This conflict exists because client 1 does not commit the change it made to record A until ending its transaction in Step 6. By the time client 2 attempts its update in Step 7, the image it read of record A (in Step 5) is outdated.