Prevent update conflicts (1 user and system trying to act on the same record)
Description
Priority
Fix versions
None
Development Team
Core: Platform
Assignee
Jakub Skoczen
Jakub SkoczenSolution Architect
None
NoneParent Field Value
None
Parent Status
None
defines
is blocked by
is defined by
relates to
Checklist
hideTestRail: Results
Activity
Show:
Khalilah Gambrell June 14, 2021 at 8:27 PM
After talking with @Jakub Skoczen, I have decided to close this feature. https://folio-org.atlassian.net/browse/UXPROD-1752#icft=UXPROD-1752 will/have addressed the work to prevent conflicts. Each app/dev team will create a feature(s) to implement the work noted with https://folio-org.atlassian.net/browse/UXPROD-1752#icft=UXPROD-1752
https://folio-org.atlassian.net/browse/UXPROD-2994#icft=UXPROD-2994 outlines the work to implement optimistic locking (OL) for the Inventory app. It is the first app to implement OL and will serve as the pattern for dev teams to apply OL to their apps/systems.
Duplicate
Details
Details
Reporter
Charlotte Whitt
Charlotte WhittRank: FLO (MVP Sum 2020)
R2
Rank: 5Colleges (Full Jul 2021)
R1
Rank: Cornell (Full Sum 2021)
R1
Rank: GBV (MVP Sum 2020)
R1
Rank: Mainz (Full TBD)
R1
Rank: TAMU (MVP Jan 2021)
R1
Rank: Chicago (MVP Sum 2020)
R1
Rank: MO State (MVP June 2020)
R1
Rank: U of AL (MVP Oct 2020)
R1
Rank: Leipzig (Full TBD)
R1
TestRail: Cases
Open TestRail: Cases
TestRail: Runs
Open TestRail: Runs
Created November 2, 2020 at 8:31 AM
Updated April 27, 2022 at 9:29 AM
Resolved June 14, 2021 at 8:27 PM
TestRail: Cases
TestRail: Runs
Problem statement
In FOLIO, most storage modules follow the "last writer wins" strategy for handling record updates. From the UI perspective this may lead to a situation when a stale record (older version of a give record) previously loaded into the UI may override a more recent version on the server. Hence relevant updates may get lost in the process and the user is not made aware of what has happened.
Proposed solution
From the storage and API perspective, optimistic locking is the proposed strategy to handle conflicts: (https://folio-org.atlassian.net/browse/UXPROD-1752#icft=UXPROD-1752). Handling of updates in FOLIO should rely on more explicit semantics, both in the storage (backend) APIs and the way it is communicated to the user through the UI.
Use cases
1 user and system trying to act on the same record, either individual records or batch
User A editing a user and system batch process is updating lots of users
User A editing an instance/holding/item and data import updating the same record (consider the DI redesign that is taking place now)
User A editing an item and checkout trying to update the item status
User A editing an item and bulk renewal trying to update the item
User A editing a budget and system applying a transaction to that budget at the same time
User A editing an instance/holdings/item after data import ran in Preview mode but before the data import changes were committed
User A editing a request while the request is being expired (request expiration date or hold shelf expiration date) - rare