-
Type: Task
-
Resolution: Done
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Doctrine
-
None
The transactional commit logic currently uses the convenient transactions API, which will retry a transaction for up to 120 seconds as long as transient errors occur. This time limit is not configurable in the API itself, but can be controlled using the timeoutMS setting introduced in the CSOT specification. However, PHP doesn't implement that specification yet, so any transaction may block requests for up to 120 seconds, which is not ideal in a web context.
To alleviate this problem, ODM should re-implement the functionality of the convenient transactions API with a different timeout mechanism. For the time being, the transaction should be retried only once, with that value potentially being configurable in the future. A time-based timeout could also be considered down the road.