Platform, DevOps and Release Management (UXPROD-1814)

[UXPROD-2798] Prevent update conflicts (two automated processes acting on the same record) Created: 02/Nov/20  Updated: 27/Apr/22  Resolved: 14/Jun/21

Status: Closed
Project: UX Product
Components: None
Affects versions: None
Fix versions: None
Parent: Platform, DevOps and Release Management

Type: New Feature Priority: P3
Reporter: Charlotte Whitt Assignee: Jakub Skoczen
Resolution: Duplicate Votes: 0
Labels: Support, platform-backlog, round_iv
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original estimate: Not Specified

Issue links:
Blocks
is blocked by RMB-719 SPIKE: design protocol and implementa... Closed
is blocked by UXPROD-1752 Prevent update conflicts (via optimis... Closed
Cloners
is cloned by UXPROD-3015 ACQ Mods - Prevent update conflicts (... In Refinement
Defines
defines UXPROD-3058 Optimistic Locking In Progress
is defined by MODINVSTOR-713 Enable support for optimistic locking... Closed
is defined by RMB-719 SPIKE: design protocol and implementa... Closed
is defined by RMB-727 Implement support for optimistic locking Closed
is defined by UIIN-1245 Implement optimistic locking in Inven... Closed
Relates
relates to RMB-688 PATCH to update only some JSONB prope... Open
relates to DEBT-1 No optimistic locking/update conflict... Closed
relates to RMB-388 PostgresClient.getById with transacti... Closed
relates to UIREQ-344 Deleting already-deleted request caus... Closed
relates to UXPROD-2796 Prevent update conflicts when doing m... Closed
relates to UXPROD-2797 Prevent update conflicts (1 user and ... Closed
relates to UIIN-730 Error message when item has been dele... Blocked
relates to FOLIO-2027 Data Problems from Front-End Record C... Open
relates to MODINVSTOR-516 Cannot safely update holdings and ite... Closed
relates to UXPROD-3089 Inventory. Implementing Optimistic Lo... Closed
Epic Link: Platform, DevOps and Release Management
Development Team: Core: Platform
Rank: Chicago (MVP Sum 2020): R1
Rank: Cornell (Full Sum 2021): R1
Rank: Duke (Full Sum 2021): R1
Rank: 5Colleges (Full Jul 2021): R1
Rank: FLO (MVP Sum 2020): R1
Rank: GBV (MVP Sum 2020): R1
Rank: Leipzig (Full TBD): R1
Rank: Mainz (Full TBD): R1
Rank: MO State (MVP June 2020): R2
Rank: TAMU (MVP Jan 2021): R1
Rank: U of AL (MVP Oct 2020): R1

 Description   

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.

This situation can happen when multiple data imports are happening at the same time (or data import and a user acting on the same record at the same time) and can affect many records at the same time. Cleanup can then be very time-consuming and confusing.

Proposed solution
From the storage and API perspective, optimistic locking is the proposed strategy to handle conflicts. 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:
Two automated processes acting on the same record.

  • Checkout happening and updating status on an item record at the same time as import updating the item
  • Data import happening at 2 libraries within the same tenant, affecting the same record (e.g. 5 Colleges processing new cataloging records)

User impact

  1. prevent collisions?
  2. notify the user when they happen and offer them a choice? Something like, "Sorry AgentB has already updated the record and your working copy might not be up-to-date? Would you like to:" (a) Update anyway (b) Reload.


 Comments   
Comment by Khalilah Gambrell [ 14/Jun/21 ]

After talking with Jakub Skoczen, I have decided to close this feature. UXPROD-1752 Closed will/have addressed the work to prevent conflicts. Each app/dev team will create a feature(s) to implement the work noted with UXPROD-1752 Closed

UXPROD-2994 Open 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.

Generated at Fri Feb 09 00:26:55 UTC 2024 using Jira 1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d.