<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Fri Feb 09 00:30:41 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>FOLIO Jira</title>
    <link>https://folio-org.atlassian.net</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>1001.0.0-SNAPSHOT</version>
        <build-number>100246</build-number>
        <build-date>07-02-2024</build-date>
    </build-info>

<item>
            <title>[MODINVOICE-297] Spike: Optimistic Locking for Acquisition</title>
                <link>https://folio-org.atlassian.net/browse/MODINVOICE-297</link>
                <project id="10155" key="MODINVOICE">mod-invoice</project>
                    <description>&lt;p&gt;&lt;b&gt;Overview&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Optimistic Locking is a technical solution provided by RMB and other frameworks to resolve update conflicts. See 
    &lt;span class=&quot;jira-issue-macro&quot; data-jira-key=&quot;UXPROD-3058&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/UXPROD-3058&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Optimistic Locking&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10307?size=medium&quot; /&gt;
            UXPROD-3058
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-current jira-macro-single-issue-export-pdf&quot;&gt;In Progress&lt;/span&gt;
            &lt;/span&gt;
 for background information.&lt;/p&gt;

&lt;p&gt;All acquisition apps are currently vulnerable to update conflicts. What this means in practice is that if 2 users are updating the same record at the same time, one of them might lose its modifications and will receive no warning. Additionally, all derived modifications are vulnerable too: if an edit triggers another edit in another module, these modifications can be lost too without a warning.&lt;/p&gt;

&lt;p&gt;Modules using other modules that have optimistic locking enabled need to check for the 409 status code, and react appropriately, for instance by minimizing risks of update conflicts, or trying the update sequence again, or report an explicit error to the user (or all 3). This means all layers require modifications.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Spike Objectives&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Discuss optimistic locking in a team meeting.&lt;/li&gt;
	&lt;li&gt;Evaluate the effort required.&lt;/li&gt;
	&lt;li&gt;Create a wiki page with a few background links, and a table with all modules and the status of optimistic locking implementation for each: storage layer, business layer, and UI, and all the related tickets.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;b&gt;Spike Decisions&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Decide on which modules and tables to start optimistic locking with.&lt;/li&gt;
	&lt;li&gt;Decide on a timeline. Which release will have complete optimistic locking for acquisition apps ?&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
        <key id="66458">MODINVOICE-297</key>
            <summary>Spike: Optimistic Locking for Acquisition</summary>
                <type id="10005" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10309?size=medium">Story</type>
                            <parent id="13731">UXPROD-3439</parent>
                                    <priority id="10002" iconUrl="https://dev.folio.org/assets/jira-priority/jira-p3.svg">P3</priority>
                        <status id="1" iconUrl="https://folio-org.atlassian.net/images/icons/statuses/open.png" description="The issue is open and ready for the assignee to start work on it.">Open</status>
                    <statusCategory id="2" key="new" colorName="blue-gray"/>
                                    <resolution id="-1">Unresolved</resolution>
                                                        <assignee accountid="-1">Unassigned</assignee>
                                                                <reporter accountid="5a8c3089b01a4c302bf1bd1e">Damien</reporter>
                                    <labels>
                            <label>acq-dev-grooming</label>
                    </labels>
                <created>Mon, 30 Aug 2021 14:19:22 +0000</created>
                <updated>Thu, 9 Dec 2021 20:38:39 +0000</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                <comments>
                                                            <comment id="161780" author="5a8c3089b01a4c302bf1bd1e" created="Thu, 2 Sep 2021 17:08:53 +0000"  >&lt;p&gt;See also this recent PO meeting notes:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/wiki/display/PO/Optimistic+Locking+-++Detecting+and+Resolving+Conflicts+Requirements&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;Optimistic Locking - Detecting and Resolving Conflicts Requirements&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="13348">UXPROD-3164</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="13620">UXPROD-3015</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="13637">UXPROD-3058</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10000" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummarycf">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10057" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Development Team</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10185"><![CDATA[Thunderjet]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10014" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue key="$xmlutils.escape($text)">Invoicing functionality that FOLIO needs to stay competitive</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10063" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>PO Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10019" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i038lj:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    </customfields>
    </item>
</channel>
</rss>