- Mailing Lists
- Contributors
- Re: Concurrency write check
Archives
- By thread 1419
-
By date
- August 2019 59
- September 2019 118
- October 2019 165
- November 2019 97
- December 2019 35
- January 2020 58
- February 2020 204
- March 2020 121
- April 2020 172
- May 2020 50
- June 2020 158
- July 2020 85
- August 2020 94
- September 2020 193
- October 2020 277
- November 2020 100
- December 2020 159
- January 2021 38
- February 2021 87
- March 2021 146
- April 2021 73
- May 2021 90
- June 2021 86
- July 2021 123
- August 2021 50
- September 2021 68
- October 2021 66
- November 2021 74
- December 2021 75
- January 2022 98
- February 2022 77
- March 2022 68
- April 2022 31
- May 2022 59
- June 2022 87
- July 2022 141
- August 2022 38
- September 2022 73
- October 2022 152
- November 2022 39
- December 2022 50
- January 2023 93
- February 2023 49
- March 2023 106
- April 2023 47
- May 2023 69
- June 2023 92
- July 2023 64
- August 2023 103
- September 2023 91
- October 2023 101
- November 2023 94
- December 2023 46
- January 2024 75
- February 2024 79
- March 2024 104
- April 2024 63
- May 2024 40
- June 2024 160
- July 2024 80
- August 2024 70
- September 2024 62
- October 2024 121
- November 2024 117
- December 2024 89
- January 2025 59
- February 2025 104
- March 2025 96
- April 2025 107
- May 2025 52
- June 2025 72
- July 2025 60
- August 2025 81
- September 2025 124
- October 2025 63
- November 2025 22
Contributors
Re: Concurrency write check
So basically Odoo has no longer any mechanism to prevent the changes of one user undoing the changes of another user.
In applications traditionally two mechanisms existed that intended to prevent this problem, respectively pessimistic and optimistic locking.
In pessimistic locking anybody touching a record with the potential to update it, would establish a lock on the record, other users would be prevented from reading the same record for update. This has the potential for lots of access problems, especially as databases and transactions became more complicated and would no longer involve single records but whole networks of records.
Optimistic locking would, as Odoo does, timestamp all records. The idea that most reads that have a potential to update a record, mostly would not be updating anything. But when updating, the timestamp of the record read would be compared with the current timestamp and any previous change would result in an Exception.
An alternative method for optimistic locking, not depending on timestamps, would be to save the original record image and compare with the actual record image just before the actual update.
Missing either
pessimistic locking or optimistic locking, for some applications
it might be needed to implement a mechanism where a user must
specifically claim a main application object for change, before
being allowed to update it. A claim made preventing other users
from making the same claim, before the application object being
released. A main application object could be a Customer, an
Order or a Helpdesk Ticket. Such a claim would work like a
"check out" in document management systems, or a kind of
Semaphore on OS level.
Closest I could come in finding some info about it is this:
https://github.com/odoo/odoo/pull/87756
Apparently it caused problems and was already long ago removed from the frontend, and by 16.0 they killed the backend part as well.
On 2/15/24 19:07, Sergio Corato wrote:
The logic isn't implemented/enabled in any version that I checked, this seems at least strange (I saw this function working in other softwares decades ago).Debugging didn't help, the context is never passed with the field '__last_update'.
However it's not a requested function, I'll give up for now ;)
Thanks
Sergio Corato
Il giorno gio 15 feb 2024 alle ore 17:07 Tom Blauwendraat <notifications@odoo-community.org> ha scritto:
I also looked for unit tests and didn't find, and also saw this function was deleted in 16.0 (but maybe renamed). I think debugging is the only way to find out! pdb to the rescue_______________________________________________
Mailing-List: https://odoo-community.org/groups/contributors-15
Post to: mailto:contributors@odoo-community.org
Unsubscribe: https://odoo-community.org/groups?unsubscribe
_______________________________________________
Mailing-List: https://odoo-community.org/groups/contributors-15
Post to: mailto:contributors@odoo-community.org
Unsubscribe: https://odoo-community.org/groups?unsubscribe
_______________________________________________
Mailing-List: https://odoo-community.org/groups/contributors-15
Post to: mailto:contributors@odoo-community.org
Unsubscribe: https://odoo-community.org/groups?unsubscribe
by "Ronald Portier" <rportier@therp.nl> - 10:31 - 16 Feb 2024
Reference
-
Concurrency write check
Hi,I haven't found a way to check if the concurrency check here works: https://github.com/odoo/odoo/blob/14.0/odoo/models.py#L3251Shouldn't it warn/block if someone tries to write on a field that has been modified in the meanwhile?Sergio Corato
by Sergio Corato - 06:26 - 14 Feb 2024