<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:15:29 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-1729] Use container memory limits to manage memory in reference environments</title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-1729</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;Right now, backend modules launched as containers by Okapi have no memory limits imposed by default. In addition, for Java-based modules, in a container, the JVM by default sees all system memory as available to it, regardless of any container memory limit.&lt;/p&gt;

&lt;p&gt;We are currently managing this by setting an environment variable &lt;tt&gt;JAVA_OPTIONS=-Xmx256m&lt;/tt&gt; (or whatever is required according to the developer) for all Java-based modules. This solution works OK, but it requires that the DevOps team configure each module individually, and the memory requirements of the module are not documented except in the deployment variables file in folio-ansible.&lt;/p&gt;

&lt;p&gt;A better solution might be:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Update the launch descriptors in each module&apos;s module descriptor template to set the &lt;tt&gt;HostConfig/Memory&lt;/tt&gt; key in &lt;tt&gt;dockerArgs&lt;/tt&gt; to the appropriate default as determined by the module development team. This will limit each container&apos;s memory usage. It could still be overridden in a deployment descriptor&lt;/li&gt;
	&lt;li&gt;Update the base Java image for FOLIO Docker containers to use the &lt;tt&gt;-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap&lt;/tt&gt; switches as part of the Java command line to allow the JVM to see the container memory limit&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
        <key id="81114">FOLIO-1729</key>
            <summary>Use container memory limits to manage memory in reference environments</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>
                                            <priority id="10001" iconUrl="https://dev.folio.org/assets/jira-priority/jira-p2.svg">P2</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="10003">Done</resolution>
                                                        <assignee accountid="-1">Unassigned</assignee>
                                                                <reporter accountid="5c706fbb47a54a6728e59df2">Wayne Schneider</reporter>
                                    <labels>
                            <label>ci</label>
                            <label>platform-backlog</label>
                            <label>sysops_mgt</label>
                    </labels>
                <created>Wed, 23 Jan 2019 16:15:33 +0000</created>
                <updated>Tue, 11 Aug 2020 16:18:59 +0000</updated>
                            <resolved>Mon, 21 Oct 2019 10:38:01 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>6</watches>
                                                                <comments>
                                                            <comment id="194652" author="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d" created="Mon, 28 Jan 2019 13:33:02 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5c706fbb47a54a6728e59df2&quot; class=&quot;user-hover&quot; rel=&quot;5c706fbb47a54a6728e59df2&quot; data-account-id=&quot;5c706fbb47a54a6728e59df2&quot; accountid=&quot;5c706fbb47a54a6728e59df2&quot; rel=&quot;noreferrer&quot;&gt;Wayne Schneider&lt;/a&gt; Is this still something we want to do? What&apos;s the reason/benefit?&lt;/p&gt;</comment>
                                                            <comment id="194655" author="5c706fbb47a54a6728e59df2" created="Mon, 28 Jan 2019 15:59:08 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3Ab8e64633-1f7c-402d-9caf-9959a5ba5d0d&quot; class=&quot;user-hover&quot; rel=&quot;557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d&quot; data-account-id=&quot;557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d&quot; accountid=&quot;557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d&quot; rel=&quot;noreferrer&quot;&gt;Jakub Skoczen&lt;/a&gt;: I see the benefits this way:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Current memory requirements for modules are set in a variables file setting in folio-ansible. Each module that is added to the system needs to be added to the variables file with a memory setting. This means that a system built from dependency resolution may include modules that are not already configured, and so the memory consumption of the module will not be limited by container boundaries.&lt;/li&gt;
	&lt;li&gt;The current method of restricting memory use is Java-only (using the &lt;tt&gt;-Xmx&lt;/tt&gt; Java command line switch). Using container memory limits would be more language-agnostic.&lt;/li&gt;
	&lt;li&gt;Currently, few (or possibly no) modules document their memory requirements. The only way a sysop can find this out is indirectly, by examining the variables file in folio-ansible. This would put the burden of documenting memory requirements on the development team for the module, where it at least arguably belongs.&lt;/li&gt;
&lt;/ol&gt;
</comment>
                                                            <comment id="194659" author="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d" created="Mon, 11 Mar 2019 12:56:15 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5c706fbb47a54a6728e59df2&quot; class=&quot;user-hover&quot; rel=&quot;5c706fbb47a54a6728e59df2&quot; data-account-id=&quot;5c706fbb47a54a6728e59df2&quot; accountid=&quot;5c706fbb47a54a6728e59df2&quot; rel=&quot;noreferrer&quot;&gt;Wayne Schneider&lt;/a&gt; My only concern here is that this involves changing the method of constraining memory (JVM-specific to container-specific) which could have unintended consequences and definitely needs testing. Would it make sense to address the issue of &quot;hardcoding&quot; JVM params first and seperately e.g by passing Launch parameters down to the container and then down to the JVM?&lt;/p&gt;</comment>
                                                            <comment id="194663" author="5c10cd488ce9b546efc4d9c4" created="Thu, 4 Apr 2019 14:31:24 +0000"  >&lt;p&gt;Requires final agreement. &lt;br/&gt;
Key points:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;update JDK&lt;/li&gt;
	&lt;li&gt;memory config&lt;/li&gt;
&lt;/ul&gt;
</comment>
                                                            <comment id="194665" author="5c706fbb47a54a6728e59df2" created="Thu, 4 Apr 2019 19:01:50 +0000"  >&lt;p&gt;Possible umbrella issue for module metadata: 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-1696&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-1696&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;SPIKE: provide operational &amp;quot;metadata&amp;quot; for each module&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium&quot; /&gt;
            FOLIO-1696
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-success jira-macro-single-issue-export-pdf&quot;&gt;Closed&lt;/span&gt;
            &lt;/span&gt;
&lt;/p&gt;</comment>
                                                            <comment id="194667" author="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d" created="Mon, 16 Sep 2019 11:35:34 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5c706fbb47a54a6728e59df2&quot; class=&quot;user-hover&quot; rel=&quot;5c706fbb47a54a6728e59df2&quot; data-account-id=&quot;5c706fbb47a54a6728e59df2&quot; accountid=&quot;5c706fbb47a54a6728e59df2&quot; rel=&quot;noreferrer&quot;&gt;Wayne Schneider&lt;/a&gt; &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=61cd0ca0bce5e00069e98be7&quot; class=&quot;user-hover&quot; rel=&quot;61cd0ca0bce5e00069e98be7&quot; data-account-id=&quot;61cd0ca0bce5e00069e98be7&quot; accountid=&quot;61cd0ca0bce5e00069e98be7&quot; rel=&quot;noreferrer&quot;&gt;David Crossley&lt;/a&gt; Guys, is this still a todo or has this been closed through the work done wih LDs last week?&lt;/p&gt;</comment>
                                                            <comment id="194670" author="5c706fbb47a54a6728e59df2" created="Mon, 16 Sep 2019 12:54:03 +0000"  >&lt;p&gt;I believe this is closed through the LD work &amp;#8211; we could close now (because a solution has been identified), or wait until 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-2242&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-2242&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Update group_vars files in folio-ansible to remove Java memory settings&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium&quot; /&gt;
            FOLIO-2242
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-success jira-macro-single-issue-export-pdf&quot;&gt;Closed&lt;/span&gt;
            &lt;/span&gt;
 (the final cleanup task of that project) is complete.&lt;/p&gt;</comment>
                                                            <comment id="194672" author="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d" created="Mon, 21 Oct 2019 10:38:01 +0000"  >&lt;p&gt;Completed based on the previous comment &amp;#8211; re-open if not the case.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                                                <inwardlinks description="is blocked by">
                                        <issuelink>
            <issuekey id="81403">FOLIO-2242</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10002">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                        <issuelink>
            <issuekey id="80506">FOLIO-1032</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="81089">FOLIO-1772</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81478">FOLIO-2334</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81250">FOLIO-2185</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="79826">FOLIO-2315</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="80990">FOLIO-1696</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="10144"><![CDATA[Core: Platform]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10019" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|hzx3og:zr</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="994">CP: ready for planning</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10024" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>[CHART] Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Mon, 28 Jan 2019 13:33:02 +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>