<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:30:26 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>[FOLIO-3753] R/W Split Adjustment</title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-3753</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;RMB-348&#160;introduces the ability to direct the read and write calls to the respective database node, the reader or writer (if the database is configured in such a way). The separation of read and write queries brings performance improvements and scalability as the write node is freed up to do more writing while the read node is busy making retrievals.&#160; &#160;Most of the read-only code in RMB has already been updated to communicate to the Read node directly. However, there are many other public RMB APIs that are used for both reading and writing by RMB&apos;s clients that have not been updated to exclusively talk to the read node.&#160; To take advantage of the read/write split, mod-oai-pmh should replace any&#160;&lt;b&gt;&lt;em&gt;retrieving&lt;/em&gt;&lt;/b&gt;&#160;code that calls the existing RMB &quot;read&quot; methods (which unfortunately could handle both read and writes) with one of the new RMB read-only methods that exclusively communicates to the read node. The table below shows the current RMB &quot;read&quot; methods that could handle reading and writing, and the new methods to replace them.&lt;/p&gt;
&lt;div class=&apos;table-wrap&apos;&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;Existing Read APIs (that could handle writing as well)&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;Replace with the Readonly Counterpart&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;public void select(String sql, int queryTimeout, Handler&amp;lt;AsyncResult&amp;lt;RowSet&amp;lt;Row&amp;gt;&amp;gt;&amp;gt; replyHandler)&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;public void selectRead(String sql, int queryTimeout, Handler&amp;lt;AsyncResult&amp;lt;RowSet&amp;lt;Row&amp;gt;&amp;gt;&amp;gt; replyHandler)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;public void select(String sql, Tuple params, Handler&amp;lt;AsyncResult&amp;lt;RowSet&amp;lt;Row&amp;gt;&amp;gt;&amp;gt; replyHandler)&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;public void selectRead(String sql, Tuple params, Handler&amp;lt;AsyncResult&amp;lt;RowSet&amp;lt;Row&amp;gt;&amp;gt;&amp;gt; replyHandler)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;public void selectSingle(String sql, Handler&amp;lt;AsyncResult&amp;lt;Row&amp;gt;&amp;gt; replyHandler&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;public void selectSingleRead(String sql, Handler&amp;lt;AsyncResult&amp;lt;Row&amp;gt;&amp;gt; replyHandler)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;public void selectSingle(String sql, Tuple params, Handler&amp;lt;AsyncResult&amp;lt;Row&amp;gt;&amp;gt; replyHandler)&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;public void selectSingleRead(String sql, Tuple params, Handler&amp;lt;AsyncResult&amp;lt;Row&amp;gt;&amp;gt; replyHandler)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;public Future&amp;lt;Void&amp;gt; selectStream(String sql, Tuple params, int chunkSize, Handler&amp;lt;RowStream&amp;lt;Row&amp;gt;&amp;gt; rowStreamHandler)&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;public Future&amp;lt;Void&amp;gt; selectReadStream(String sql, Tuple params, int chunkSize, Handler&amp;lt;RowStream&amp;lt;Row&amp;gt;&amp;gt; rowStreamHandler)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;public &amp;lt;T&amp;gt; Future&amp;lt;T&amp;gt; withTrans(Function&amp;lt;Conn, Future&amp;lt;T&amp;gt;&amp;gt; function)&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;public &amp;lt;T&amp;gt; Future&amp;lt;T&amp;gt; withReadTrans(Function&amp;lt;Conn, Future&amp;lt;T&amp;gt;&amp;gt; function)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;void getSQLConnection(int queryTimeout, Handler&amp;lt;AsyncResult&amp;lt;SQLConnection&amp;gt;&amp;gt; handler)&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;void getSQLReadConnection(int queryTimeout, Handler&amp;lt;AsyncResult&amp;lt;SQLConnection&amp;gt;&amp;gt; handler)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;public Future&amp;lt;PgConnection&amp;gt; getConnection() {&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;public Future&amp;lt;PgConnection&amp;gt; getReadConnection()&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;public void getConnection(Handler&amp;lt;AsyncResult&amp;lt;PgConnection&amp;gt;&amp;gt; replyHandler)&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;public void getReadConnection(Handler&amp;lt;AsyncResult&amp;lt;PgConnection&amp;gt;&amp;gt; replyHandler)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;


&lt;p&gt;Note: Some SELECT statements write and will fail when run readonly, for example &lt;tt&gt;SELECT nextval(&apos;mysequence&apos;)&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;If the database cluster does not have a reader node, then calling these readonly methods will result in going to the same write node.&#160; The high level workflow will behave the same way as it does now before making these changes. See&#160;&lt;a href=&quot;https://github.com/folio-org/raml-module-builder#read-and-write-database-instances-setup&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;RMB&apos;s Readme&lt;/a&gt;&#160;for more configuration details.&lt;/p&gt;</description>
                <environment></environment>
        <key id="79865">FOLIO-3753</key>
            <summary>R/W Split Adjustment</summary>
                <type id="10000" iconUrl="https://folio-org.atlassian.net/images/icons/issuetypes/epic.svg">Epic</type>
                                            <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="557058:003b2b3f-c9ac-4207-96eb-21cdb3765e26">Oleksii Petrenko</reporter>
                                    <labels>
                    </labels>
                <created>Tue, 11 Apr 2023 21:34:11 +0000</created>
                <updated>Thu, 30 Nov 2023 16:43:07 +0000</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                    <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="56815">RMB-975</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="10168"><![CDATA[None]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10013" key="com.pyxis.greenhopper.jira:gh-epic-color">
                        <customfieldname>Epic Color</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>ghx-label-1</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10011" key="com.pyxis.greenhopper.jira:gh-epic-label">
                        <customfieldname>Epic Name</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>R/W Split Adjustment</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10012" key="com.pyxis.greenhopper.jira:gh-epic-status">
                        <customfieldname>Epic Status</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10016"><![CDATA[To Do]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_10017" key="com.pyxis.greenhopper.jira:jsw-issue-color">
                        <customfieldname>Issue color</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>dark_grey</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|i06uc3:</customfieldvalue>

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