<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Fri Feb 09 00:31:05 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>[UXPROD-3317] Improve checkout performance by caching data</title>
                <link>https://folio-org.atlassian.net/browse/UXPROD-3317</link>
                <project id="10000" key="UXPROD">UX Product</project>
                    <description>&lt;p&gt;&lt;b&gt;Overview:&lt;/b&gt; &lt;br/&gt;
Cornell reports that check-ins and checkouts range from 1 second to 5 seconds (and sometimes up to 11 seconds).  Missouri State reports the same rate.  We need to improve the processing time for check-ins and checkouts.  &lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=63e2a2771b13d42998e4e706&quot; class=&quot;user-hover&quot; rel=&quot;63e2a2771b13d42998e4e706&quot; data-account-id=&quot;63e2a2771b13d42998e4e706&quot; accountid=&quot;63e2a2771b13d42998e4e706&quot; rel=&quot;noreferrer&quot;&gt;Marc Johnson&lt;/a&gt; has created a proposal at &lt;a href=&quot;https://folio-org.atlassian.net/wiki/x/DgJU&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://folio-org.atlassian.net/wiki/x/DgJU&lt;/a&gt;.  After reviewing the proposal, the  Capacity Planning Team has determined that we should proceed with the caching approach.  Marc is in the process of creating a document outlining the technical aspects for the devs.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Steps:&lt;/b&gt;&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;Ask assigned team to come up with approach within 2 weeks.&lt;/li&gt;
	&lt;li&gt;Try out this caching approach on one record type, choosing the one with the biggest impact.&lt;/li&gt;
	&lt;li&gt;After we are satisfied with the process, implement caching for as many other record types as we are able during the release.  Need to prioritize the rest of the record types so that we get the heavy hitters first.&lt;/li&gt;
	&lt;li&gt;Have the PTF team analyze the results of caching work completed.&lt;/li&gt;
	&lt;li&gt;Discuss impact of caching with Resource Access SIG (i.e. if cached record is more than X minutes old, refresh it).   We are waiting until we know the impact of caching on the response time so that we are able to present the process with as much information as possible.&lt;/li&gt;
	&lt;li&gt;Determine next steps based on new PTF team analysis.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;The &quot;is defined by&quot; stories for this feature should be worked on in this order...&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;img src=&quot;/rest/api/3/attachment/content/11001&quot; height=&quot;183&quot; width=&quot;200&quot; style=&quot;border: 0px solid black&quot; /&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p&gt;Recommended approach to take..&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;cache expiration of 5 seconds for all record types&lt;/li&gt;
	&lt;li&gt;maximum cache size of 1000 records (this is pure speculation, as we don&apos;t know what impact the caching will have on memory usage)&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
        <key id="12168">UXPROD-3317</key>
            <summary>Improve checkout performance by caching data</summary>
                <type id="10002" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10322?size=medium">New Feature</type>
                            <parent id="10481">UXPROD-746</parent>
                                    <priority id="10000" iconUrl="https://dev.folio.org/assets/jira-priority/jira-p1.svg">P1</priority>
                        <status id="6" iconUrl="https://folio-org.atlassian.net/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10000">Won&apos;t Do</resolution>
                                                        <assignee accountid="557058:a957226f-df85-4fc8-97f4-8b27a26029ed">Holly Mistlebauer</assignee>
                                                                <reporter accountid="557058:a957226f-df85-4fc8-97f4-8b27a26029ed">Holly Mistlebauer</reporter>
                                    <labels>
                            <label>NFR</label>
                            <label>performance</label>
                    </labels>
                <created>Tue, 21 Sep 2021 14:58:55 +0000</created>
                <updated>Tue, 4 Jan 2022 09:50:34 +0000</updated>
                            <resolved>Tue, 9 Nov 2021 17:57:49 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                <comments>
                                                            <comment id="17458" author="557058:a957226f-df85-4fc8-97f4-8b27a26029ed" created="Tue, 21 Sep 2021 20:07:27 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=63e2a2771b13d42998e4e706&quot; class=&quot;user-hover&quot; rel=&quot;63e2a2771b13d42998e4e706&quot; data-account-id=&quot;63e2a2771b13d42998e4e706&quot; accountid=&quot;63e2a2771b13d42998e4e706&quot; rel=&quot;noreferrer&quot;&gt;Marc Johnson&lt;/a&gt;:  Which record types should we cache first?  I would like to create tickets for at least 5.&lt;/p&gt;</comment>
                                                            <comment id="17459" author="63e2a2771b13d42998e4e706" created="Tue, 21 Sep 2021 21:11:35 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3Aa957226f-df85-4fc8-97f4-8b27a26029ed&quot; class=&quot;user-hover&quot; rel=&quot;557058:a957226f-df85-4fc8-97f4-8b27a26029ed&quot; data-account-id=&quot;557058:a957226f-df85-4fc8-97f4-8b27a26029ed&quot; accountid=&quot;557058:a957226f-df85-4fc8-97f4-8b27a26029ed&quot; rel=&quot;noreferrer&quot;&gt;Holly Mistlebauer&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Which record types should we cache first? I would like to create tickets for at least 5.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I don&apos;t think it would be appropriate for me to make that decision.&lt;/p&gt;

&lt;p&gt;My preference would be for the RA SIG or relevant POs to decide. &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3Adea2f026-f9d7-42e0-af50-31b385c95e3e&quot; class=&quot;user-hover&quot; rel=&quot;557058:dea2f026-f9d7-42e0-af50-31b385c95e3e&quot; data-account-id=&quot;557058:dea2f026-f9d7-42e0-af50-31b385c95e3e&quot; accountid=&quot;557058:dea2f026-f9d7-42e0-af50-31b385c95e3e&quot; rel=&quot;noreferrer&quot;&gt;Cheryl Malmborg&lt;/a&gt; do you have a preference?&lt;/p&gt;

&lt;p&gt;Given the conversation in Capacity Planning, maybe &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=62a96ae7192edb006f9f1bf9&quot; class=&quot;user-hover&quot; rel=&quot;62a96ae7192edb006f9f1bf9&quot; data-account-id=&quot;62a96ae7192edb006f9f1bf9&quot; accountid=&quot;62a96ae7192edb006f9f1bf9&quot; rel=&quot;noreferrer&quot;&gt;Khalilah Gambrell&lt;/a&gt; or &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5af5ecdb772036612ff61cf1&quot; class=&quot;user-hover&quot; rel=&quot;5af5ecdb772036612ff61cf1&quot; data-account-id=&quot;5af5ecdb772036612ff61cf1&quot; accountid=&quot;5af5ecdb772036612ff61cf1&quot; rel=&quot;noreferrer&quot;&gt;Hkaplanian&lt;/a&gt; have some thoughts on which should be chosen?&lt;/p&gt;</comment>
                                                            <comment id="17460" author="5af5ecdb772036612ff61cf1" created="Tue, 21 Sep 2021 21:42:50 +0000"  >&lt;p&gt;The path forward here is to take the list of requests that the circ apps make that take the most time and from a technical perspective look at what database lookups would give us the most time savings.&#160; We already have that data at call level (I believe).&#160; In many ways, this is a POC and I assume multiple questions will arise both during and after where the SIG might be able to help us clarify, but at this stage, we have the data needed to make that decision.&#160; We already have the list I refer to.&#160; Marc, it&apos;s up to you at this stage.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                                                            <comment id="17461" author="557058:a957226f-df85-4fc8-97f4-8b27a26029ed" created="Fri, 24 Sep 2021 17:58:31 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=63e2a2771b13d42998e4e706&quot; class=&quot;user-hover&quot; rel=&quot;63e2a2771b13d42998e4e706&quot; data-account-id=&quot;63e2a2771b13d42998e4e706&quot; accountid=&quot;63e2a2771b13d42998e4e706&quot; rel=&quot;noreferrer&quot;&gt;Marc Johnson&lt;/a&gt;: I have looked at the response time of each &quot;Intent&quot; using the data available at &lt;a href=&quot;https://folio-org.atlassian.net/wiki/x/DgJU&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://folio-org.atlassian.net/wiki/x/DgJU&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The &quot;Intents&quot; with the highest response times are...&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Fetch automated blocks (546 ms)&lt;/li&gt;
	&lt;li&gt;Fetch item barcode (163 ms)&lt;/li&gt;
	&lt;li&gt;Update item status (194 ms)&lt;/li&gt;
	&lt;li&gt;Fetch manual patron blocks (133 ms)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;I am assuming that we can only cache the &quot;Fetch&quot; &quot;Intents&quot;, so &quot;Update item status&quot; is out.  Two of the &quot;Fetches&quot; have had an improvement made already (&quot;Fetch automated blocks&quot; and &quot;Fetch item barcode&quot; and one has a separate issue for the Vega team to address (&quot;Fetch manual patron blocks&quot;).  &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=63e2a2771b13d42998e4e706&quot; class=&quot;user-hover&quot; rel=&quot;63e2a2771b13d42998e4e706&quot; data-account-id=&quot;63e2a2771b13d42998e4e706&quot; accountid=&quot;63e2a2771b13d42998e4e706&quot; rel=&quot;noreferrer&quot;&gt;Marc Johnson&lt;/a&gt;:  Should we include any of these 4 in the group of 5 we start with?&lt;/p&gt;

&lt;p&gt;If not, I am thinking we could do these 5...&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Fetch holdings (57 ms)&lt;/li&gt;
	&lt;li&gt;Fetch instance (22 ms)&lt;/li&gt;
	&lt;li&gt;Fetch overdue fine policy (19 ms)&lt;/li&gt;
	&lt;li&gt;Fetch circulation rules (18 ms)&lt;/li&gt;
	&lt;li&gt;Fetch lost item fee policy (11 ms)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Thoughts?&lt;/p&gt;

&lt;p&gt;cc: &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5af5ecdb772036612ff61cf1&quot; class=&quot;user-hover&quot; rel=&quot;5af5ecdb772036612ff61cf1&quot; data-account-id=&quot;5af5ecdb772036612ff61cf1&quot; accountid=&quot;5af5ecdb772036612ff61cf1&quot; rel=&quot;noreferrer&quot;&gt;Hkaplanian&lt;/a&gt;; &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=62a96ae7192edb006f9f1bf9&quot; class=&quot;user-hover&quot; rel=&quot;62a96ae7192edb006f9f1bf9&quot; data-account-id=&quot;62a96ae7192edb006f9f1bf9&quot; accountid=&quot;62a96ae7192edb006f9f1bf9&quot; rel=&quot;noreferrer&quot;&gt;Khalilah Gambrell&lt;/a&gt;&lt;/p&gt;</comment>
                                                            <comment id="17462" author="5af5ecdb772036612ff61cf1" created="Fri, 24 Sep 2021 18:12:11 +0000"  >&lt;p&gt;Marc can correct me, but I think a good set of criteria could be:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Which of the items listed are run for each and every checkout?&#160;&lt;/li&gt;
	&lt;li&gt;Of those, which are relatively small tables that can be loaded into memory easily.&#160; Ex: Barcode file is probably too large and unique for every scan.&#160; Circ rules can be reused with each and every scan and don&apos;t change often and could be a good candidate.&#160; Same for fine policies.&#160;&#160;&lt;/li&gt;
	&lt;li&gt;But, &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=63e2a2771b13d42998e4e706&quot; class=&quot;user-hover&quot; rel=&quot;63e2a2771b13d42998e4e706&quot; data-account-id=&quot;63e2a2771b13d42998e4e706&quot; accountid=&quot;63e2a2771b13d42998e4e706&quot; rel=&quot;noreferrer&quot;&gt;Marc Johnson&lt;/a&gt;&#160;,looking at the small time periods it takes, do any of those pay?&#160; Are they also used when looking up automated blocks which could give us better payback?&#160; Is there any real savings to be had here?&lt;/li&gt;
&lt;/ol&gt;
</comment>
                                                            <comment id="17463" author="5af5ecdb772036612ff61cf1" created="Tue, 28 Sep 2021 13:20:26 +0000"  >&lt;p&gt;Marc, looking at this list:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Fetch holdings (57 ms)&lt;/li&gt;
	&lt;li&gt;Fetch instance (22 ms)&lt;/li&gt;
	&lt;li&gt;Fetch overdue fine policy (19 ms)&lt;/li&gt;
	&lt;li&gt;Fetch circulation rules (18 ms)&lt;/li&gt;
	&lt;li&gt;Fetch lost item fee policy (11 ms)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;During a loan, are these called for the same data multiple times?&#160; Once per item?&#160; 2x per item?&#160; IS fetching the lost items fee policy worth it if in total it only saves 11 ms?&#160; Just wondering...&lt;/p&gt;</comment>
                                                            <comment id="17464" author="63e2a2771b13d42998e4e706" created="Tue, 28 Sep 2021 16:12:35 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5af5ecdb772036612ff61cf1&quot; class=&quot;user-hover&quot; rel=&quot;5af5ecdb772036612ff61cf1&quot; data-account-id=&quot;5af5ecdb772036612ff61cf1&quot; accountid=&quot;5af5ecdb772036612ff61cf1&quot; rel=&quot;noreferrer&quot;&gt;Hkaplanian&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;During a loan, are these called for the same data multiple times?  Once per item?  2x per item?&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;They should be only requested once per check out (which is only for a single item)&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;IS fetching the lost items fee policy worth it if in total it only saves 11 ms?  Just wondering...&lt;/p&gt;&lt;/blockquote&gt;

&lt;blockquote&gt;&lt;p&gt;looking at the small time periods it takes, do any of those pay?  Are they also used when looking up automated blocks which could give us better payback?  Is there any real savings to be had here?&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Not really, not on their own. It&apos;s also worth remembering that this sample is likely misleading (it&apos;s all we&apos;ve got to go on).&lt;/p&gt;

&lt;p&gt;I think this is where evaluating if this approach is improving the performance is going to be challenging. &lt;/p&gt;

&lt;p&gt;The current performance is due to the cumulative effect of many requests. That likely means we will only get fairly small (maybe not really any) improvement from stopping any one request.&lt;/p&gt;

&lt;p&gt;As we don&apos;t know how each of these requests degrade under load (we only have a sample under no load and the overall check out API response times), it is challenging to know which ones put the system under pressure and which ones become more significant constraints under load.&lt;/p&gt;

&lt;p&gt;What this all means is that we aren&apos;t likely to know how well we&apos;ve done until multiple record types have been done and a full load test has been conducted. This makes getting timely feedback on whether we&apos;ve chosen the right approach and record types challenging.&lt;/p&gt;


</comment>
                                                            <comment id="17465" author="63e2a2771b13d42998e4e706" created="Tue, 28 Sep 2021 16:24:59 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5af5ecdb772036612ff61cf1&quot; class=&quot;user-hover&quot; rel=&quot;5af5ecdb772036612ff61cf1&quot; data-account-id=&quot;5af5ecdb772036612ff61cf1&quot; accountid=&quot;5af5ecdb772036612ff61cf1&quot; rel=&quot;noreferrer&quot;&gt;Hkaplanian&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Which of the items listed are run for each and every checkout? &lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Most of them will be fetched for every request, these are the ones I&apos;m confident of:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;item&lt;/li&gt;
	&lt;li&gt;holdings record&lt;/li&gt;
	&lt;li&gt;instance&lt;/li&gt;
	&lt;li&gt;location&lt;/li&gt;
	&lt;li&gt;library&lt;/li&gt;
	&lt;li&gt;campus&lt;/li&gt;
	&lt;li&gt;institution&lt;/li&gt;
	&lt;li&gt;material type&lt;/li&gt;
	&lt;li&gt;loans&lt;/li&gt;
	&lt;li&gt;requests&lt;/li&gt;
	&lt;li&gt;user&lt;/li&gt;
	&lt;li&gt;user group&lt;/li&gt;
	&lt;li&gt;patron blocks (both manual and automatic)&lt;/li&gt;
	&lt;li&gt;service point&lt;/li&gt;
	&lt;li&gt;loan policy&lt;/li&gt;
	&lt;li&gt;circulation rules (although there is already caching here)&lt;/li&gt;
	&lt;li&gt;tenant locale&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Loans, requests and items are &lt;b&gt;poor candidates&lt;/b&gt; for caching (though not for other forms of derived data, this is why my preference was for persistent derived data) as I imagine check outs for the same item in a short time frame are rare. I don&apos;t know what the impact of title level requests will be on this area.&lt;/p&gt;

&lt;p&gt;I cannot answer that authoritatively without much more analysis of all of the code paths in the system.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Of those, which are relatively small tables that can be loaded into memory easily. Circ rules can be reused with each and every scan and don&apos;t change often and could be a good candidate.  Same for fine policies.  &lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Can you help me understand why you are asking this question?&lt;/p&gt;

&lt;p&gt;The approach that we&apos;ve chosen (on demand, partial caching) means that we likely won&apos;t be loading the entire set of records for any record type into memory and if we do, it will be one at a time.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Ex: Barcode file is probably too large and unique for every scan.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I believe the unique barcode changes have been aborted for 2021 R2 &lt;del&gt;and maybe 2021 R3&lt;/del&gt; due to some organisations not being ready for this change.&lt;/p&gt;</comment>
                                                            <comment id="17466" author="63e2a2771b13d42998e4e706" created="Wed, 29 Sep 2021 11:30:45 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5af5ecdb772036612ff61cf1&quot; class=&quot;user-hover&quot; rel=&quot;5af5ecdb772036612ff61cf1&quot; data-account-id=&quot;5af5ecdb772036612ff61cf1&quot; accountid=&quot;5af5ecdb772036612ff61cf1&quot; rel=&quot;noreferrer&quot;&gt;Hkaplanian&lt;/a&gt; &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3Aa957226f-df85-4fc8-97f4-8b27a26029ed&quot; class=&quot;user-hover&quot; rel=&quot;557058:a957226f-df85-4fc8-97f4-8b27a26029ed&quot; data-account-id=&quot;557058:a957226f-df85-4fc8-97f4-8b27a26029ed&quot; accountid=&quot;557058:a957226f-df85-4fc8-97f4-8b27a26029ed&quot; rel=&quot;noreferrer&quot;&gt;Holly Mistlebauer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I think I&apos;ve answered the current questions asked and provided my thoughts on implementation. Please let me know if you need anything else at the moment.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;I am assuming that we can only cache the &quot;Fetch&quot; &quot;Intents&quot;, so &quot;Update item status&quot; is out. &lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Yes, state changes cannot be avoided (at least not with the current process design).&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Two of the &quot;Fetches&quot; have had an improvement made already (&quot;Fetch automated blocks&quot; and &quot;Fetch item barcode&quot; and one has a separate issue for the Vega team to address (&quot;Fetch manual patron blocks&quot;). Marc Johnson: Should we include any of these 4 in the group of 5 we start with?&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I think we should exclude any of the operations that we have decided to dedicate separate work from the caching for the moment, in order to understand the impact of those improvements separately (ish, depending upon frequency of performance testing) from the caching changes.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;My Proposed Ordering&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Given that we aren&apos;t going to work with the RA SIG or other stakeholders to understand the tolerances they might accept. And that the response times for most of the record fetches are of a similar magnitude.&lt;/p&gt;

&lt;p&gt;I think that it makes sense to start with the ones (that I think are) less likely to change and / or the impact of changes will likely be low.&lt;/p&gt;

&lt;p&gt;The policies are in a slightly strange place in this list, I&apos;ve put them a little higher than the potential negative impact might suggest, because we might want to get to some of that feedback sooner rather than later.&lt;/p&gt;

&lt;p&gt;Here is my proposed ordering (my reasoning in brackets):&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;tenant locale (singular, is common to all check outs, should change very rarely)&lt;/li&gt;
	&lt;li&gt;loan type (probably small set, likely common to some check outs, low impact if inconsistent)&lt;/li&gt;
	&lt;li&gt;patron group (probably small set, likely common to some check outs, low impact if inconsistent)&lt;/li&gt;
	&lt;li&gt;material type (unsure of set size, likely common to some check outs, low impact if inconsistent)&lt;/li&gt;
	&lt;li&gt;location (unsure of set size, likely common to some check outs, low impact if inconsistent)&lt;/li&gt;
	&lt;li&gt;service point (unsure of set size, likely common to some check outs, low impact if inconsistent)&lt;/li&gt;
	&lt;li&gt;loan policy (small set, likely common to many check outs, possible high impact if inconsistent)&lt;/li&gt;
	&lt;li&gt;lost item policy (small set, likely common to many check outs, possible high impact if inconsistent)&lt;/li&gt;
	&lt;li&gt;overdue fine policy (small set, likely common to many check outs, possible high impact if inconsistent)&lt;/li&gt;
	&lt;li&gt;institution (unsure of set size, likely common to some check outs, low impact if inconsistent)&lt;/li&gt;
	&lt;li&gt;campus (unsure of set size, likely common to some check outs, low impact if inconsistent)&lt;/li&gt;
	&lt;li&gt;library (unsure of set size, likely common to some check outs, low impact if inconsistent)&lt;/li&gt;
	&lt;li&gt;circulation rules (already cached, we may want to replace this with a similar cache to what we implement in other places)&lt;/li&gt;
	&lt;li&gt;instance (large set, unlikely to be common to many check outs)&lt;/li&gt;
	&lt;li&gt;holdings record (large set, unlikely to be common to many check outs)&lt;/li&gt;
	&lt;li&gt;user (large set, unlikely to be common to many check outs)&lt;/li&gt;
	&lt;li&gt;item (large set, not common to any successful check outs within the time frame)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;b&gt;Cache Policies&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;I suggest we start with &lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;a cache expiration of 5 seconds for all record types&lt;/li&gt;
	&lt;li&gt;a maximum cache size of 1000 records (this is pure speculation, as we don&apos;t know what impact the caching will have on memory usage)&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Both of these should be runtime configurable so the PTF team (and other operational folks) can tweak them.&lt;/p&gt;</comment>
                                                            <comment id="17467" author="557058:a957226f-df85-4fc8-97f4-8b27a26029ed" created="Wed, 29 Sep 2021 17:47:58 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=62a96ae7192edb006f9f1bf9&quot; class=&quot;user-hover&quot; rel=&quot;62a96ae7192edb006f9f1bf9&quot; data-account-id=&quot;62a96ae7192edb006f9f1bf9&quot; accountid=&quot;62a96ae7192edb006f9f1bf9&quot; rel=&quot;noreferrer&quot;&gt;Khalilah Gambrell&lt;/a&gt; and &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5af5ecdb772036612ff61cf1&quot; class=&quot;user-hover&quot; rel=&quot;5af5ecdb772036612ff61cf1&quot; data-account-id=&quot;5af5ecdb772036612ff61cf1&quot; accountid=&quot;5af5ecdb772036612ff61cf1&quot; rel=&quot;noreferrer&quot;&gt;Hkaplanian&lt;/a&gt;: Hi!  I have created the stories for this feature.  Should I assign this to Vega?  Thanks...&lt;br/&gt;
cc: &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=63e2a2771b13d42998e4e706&quot; class=&quot;user-hover&quot; rel=&quot;63e2a2771b13d42998e4e706&quot; data-account-id=&quot;63e2a2771b13d42998e4e706&quot; accountid=&quot;63e2a2771b13d42998e4e706&quot; rel=&quot;noreferrer&quot;&gt;Marc Johnson&lt;/a&gt;&lt;/p&gt;</comment>
                                                            <comment id="17468" author="5ee89462f7aa140abd82d11d" created="Tue, 5 Oct 2021 18:17:09 +0000"  >&lt;p&gt;If optimistic locking is enabled for a table getting an outdated record and using it for PUT will result in an optimistic locking failure that will persist when reloading the record until the cache expiration time has been reached.&lt;/p&gt;

&lt;p&gt;This can be avoided by invalidating the cache for that record when doing a PUT.&lt;/p&gt;</comment>
                                                            <comment id="17469" author="557058:a957226f-df85-4fc8-97f4-8b27a26029ed" created="Tue, 9 Nov 2021 17:57:49 +0000"  >&lt;p&gt;It was decided that caching data would not give us level of performance improvement we need.  &lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10008">
                    <name>Defines</name>
                                                                <inwardlinks description="is defined by ">
                                        <issuelink>
            <issuekey id="49198">CIRC-1301</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="49200">CIRC-1302</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="49201">CIRC-1303</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="49202">CIRC-1304</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="49203">CIRC-1305</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="49204">CIRC-1306</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="49206">CIRC-1307</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="49205">CIRC-1308</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="49207">CIRC-1309</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="49208">CIRC-1310</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="49210">CIRC-1311</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="49209">CIRC-1312</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="49211">CIRC-1313</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="49212">CIRC-1314</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="49291">CIRC-1315</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="49295">CIRC-1316</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="49299">CIRC-1317</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="11001" name="screenshot-1.png" size="9878" author="557058:a957226f-df85-4fc8-97f4-8b27a26029ed" created="Wed, 29 Sep 2021 17:40:49 +0000"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10053" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Back End Estimate</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10126"><![CDATA[Jumbo: > 45 days]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10000" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummarycf">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10014" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue key="$xmlutils.escape($text)">Performance</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10050" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Front End Estimate</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10094"><![CDATA[Out of scope]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10052" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Front-End Confidence factor</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10107"><![CDATA[Low]]></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|i03d2v:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10024" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>[CHART] Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Tue, 21 Sep 2021 21:11:35 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10025" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>[CHART] Time in Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                    </customfields>
    </item>
</channel>
</rss>