-
- Downloads
[FIX] web: BasicController: remove deadlock situation
This rev. removes a deadlock situation that could *theoretically* occur, but that was actually hard to reach in practice. Before saving a record (e.g. in a form view), all field widgets are asked to commit their value (in case they wouldn't have notified the model yet, e.g. because the user just changed them). For instance, let's assume that the user fills an input field, and then triggers the save. In practice, by triggering the save, it will force the widget to notify the model of its new value (because it looses the focus). This is also the case using keyboard navigation, as it actually simulates clicks. So when the widget is asked to commit its value right after, it has nothing more to commit. This is fortunate, because if it actually had something to commit, we would end up in a deadlock ('commitChanges' is executed in a mutex, and if the widget triggers a new value, '_applyChange' is called, and is executed in that mutex as well). In fact, executing 'commitChanges' in a mutex is useless, as '_applyChange', which is called when a widget has something to commit, is already executed in the mutex. So this rev. removes the use of the mutex in 'commitChanges'. Doing so broke several Many2One tests, because they wrongly relied on the presence of the mutex for scenarios where the user quick creates a relational record, and then directly saves (before the relational record is actually created). We thus handled that usecase properly to make the tests pass. Task 1878254.
Showing
- addons/web/static/src/js/fields/relational_fields.js 48 additions, 19 deletionsaddons/web/static/src/js/fields/relational_fields.js
- addons/web/static/src/js/views/basic/basic_controller.js 3 additions, 5 deletionsaddons/web/static/src/js/views/basic/basic_controller.js
- addons/web/static/tests/views/form_tests.js 41 additions, 0 deletionsaddons/web/static/tests/views/form_tests.js
Loading
Please register or sign in to comment