Details
-
Type:
Task
-
Status:
Resolved
-
Priority:
Minor
-
Resolution: Fixed
-
Affects Version/s: 2.0-ALPHA4
-
Fix Version/s: 2.0-BETA3
-
Component/s: None
-
Security Level: All
-
Labels:None
Description
this is just a reminder ticket .. it is important that all SQL code in D2 takes concurrent requests into account. this means simply fetching data and then writing data back to the RDBMS needs to take into account that there could be concurrent requests that change the fetched data. this means employing necessary explicit locking or optimistic locking etc.
Issue Links
- is referenced by
-
DDC-178
Query Hint for LOCK mechanisms plus support in $em->find()
-
Activity
Roman S. Borschel
made changes -
| Field | Original Value | New Value |
|---|---|---|
| Priority | Blocker [ 1 ] | Minor [ 4 ] |
Benjamin Eberlei
made changes -
Benjamin Eberlei
made changes -
| Attachment | TableLocking.php [ 10450 ] |
Roman S. Borschel
made changes -
| Fix Version/s | 2.0-BETA2 [ 10050 ] | |
| Fix Version/s | 2.0-BETA1 [ 10030 ] |
Roman S. Borschel
made changes -
| Assignee | Roman S. Borschel [ romanb ] | Benjamin Eberlei [ beberlei ] |
| Fix Version/s | 2.0-BETA3 [ 10060 ] | |
| Fix Version/s | 2.0-BETA2 [ 10050 ] |
Benjamin Eberlei
made changes -
| Status | Open [ 1 ] | Resolved [ 5 ] |
| Resolution | Fixed [ 1 ] |
Benjamin Eberlei
made changes -
| Workflow | jira [ 11033 ] | jira-feedback [ 14320 ] |
Benjamin Eberlei
made changes -
| Workflow | jira-feedback [ 14320 ] | jira-feedback2 [ 16184 ] |
Benjamin Eberlei
made changes -
| Workflow | jira-feedback2 [ 16184 ] | jira-feedback3 [ 18437 ] |
This list may be incomplete, as errors occurred whilst retrieving source from linked applications:
- Request to http://www.doctrine-project.org/fisheye/ failed: Error in remote call to 'FishEye 0 (http://www.doctrine-project.org/fisheye/)' (http://www.doctrine-project.org/fisheye) [AbstractRestCommand{path='/rest-service-fe/search-v1/crossRepositoryQuery', params={query=DDC-410, expand=changesets[-21:-1].revisions[0:29],reviews}, methodType=GET}] : Received status code 503 (Service Temporarily Unavailable)
I think we dont use a read - update - write approach that is supposed to be atomic anywhere. Its obvious that this is fragile. Its like the select max() + increment in memory + write record variant for generating primary keys which is obviously a bad idea (at least it would need SERIALIZABLE transaction isolation I think).
(Obviously, any object retrieval -> modification -> persistence is a read-update-write but thats expectedly not "concurrency safe". Thats what optimistic or pessimistic (not yet implemented) locking is for.)