<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:18:50 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-2185] SPIKE: how to maintain resource deployment descriptors in the module repository?</title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-2185</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;this is a follow up to 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-2183&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-2183&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;integrate backend-module pipeline into Jenkins&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-2183
        &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;
. We would like the module developers to author those files and provide appropriate settings for things like memory, CPU, etc.&lt;/p&gt;

&lt;p&gt;We have decided that the way to address this problem is by keeping the settings in ModuleDescriptor and provide a stand-alone script that will generate K8s YAML descriptor from the MD. (
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-2219&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-2219&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Create script to build Kubernetes deployment yaml from module descriptor metadata&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-2219
        &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;
</description>
                <environment></environment>
        <key id="81250">FOLIO-2185</key>
            <summary>SPIKE: how to maintain resource deployment descriptors in the module repository?</summary>
                <type id="10003" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium">Task</type>
                                            <priority id="10002" iconUrl="https://dev.folio.org/assets/jira-priority/jira-p3.svg">P3</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="5c706fbb47a54a6728e59df2">Wayne Schneider</assignee>
                                                                <reporter accountid="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d">Jakub Skoczen</reporter>
                                    <labels>
                            <label>platform-backlog</label>
                    </labels>
                <created>Mon, 22 Jul 2019 15:18:43 +0000</created>
                <updated>Wed, 3 Jun 2020 16:40:01 +0000</updated>
                            <resolved>Fri, 6 Sep 2019 18:05:26 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>5</watches>
                                                                <comments>
                                                            <comment id="192416" author="5cd423bebc70090d6ce241b1" created="Fri, 30 Aug 2019 12:35:55 +0000"  >&lt;p&gt;Tasks:&lt;/p&gt;

&lt;p&gt;1. Select test module (should require both environment vars and args ideally mod-login is a good candidate)&lt;br/&gt;
2. Fill in launch descriptor with necessary environment variables and arguments&lt;br/&gt;
3. test that LD can be used to launch a docker container by having okapi try to deploy this modified LD.&lt;br/&gt;
3.5. Make sure LD doesn&apos;t break existing folio-ansible roles&lt;br/&gt;
4. create kubernetes yaml (
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-2219&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-2219&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Create script to build Kubernetes deployment yaml from module descriptor metadata&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-2219
        &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="192421" author="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d" created="Tue, 3 Sep 2019 13:18:25 +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=5cd423bebc70090d6ce241b1&quot; class=&quot;user-hover&quot; rel=&quot;5cd423bebc70090d6ce241b1&quot; data-account-id=&quot;5cd423bebc70090d6ce241b1&quot; accountid=&quot;5cd423bebc70090d6ce241b1&quot; rel=&quot;noreferrer&quot;&gt;Ian Hardy&lt;/a&gt; Guys can we get an example of how all nessesary information would be contained in the launch descriptor before we start rolling this out? It can be a pseudo (imaginary) example?&lt;/p&gt;</comment>
                                                            <comment id="192424" author="5c706fbb47a54a6728e59df2" created="Tue, 3 Sep 2019 16:39:16 +0000"  >&lt;p&gt;Here is an example for mod-login:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
  &lt;span class=&quot;code-quote&quot;&gt;&quot;launchDescriptor&quot;&lt;/span&gt;: {
    &lt;span class=&quot;code-quote&quot;&gt;&quot;dockerImage&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;${artifactId}:${version}&quot;&lt;/span&gt;,
    &lt;span class=&quot;code-quote&quot;&gt;&quot;dockerArgs&quot;&lt;/span&gt;: {
      &lt;span class=&quot;code-quote&quot;&gt;&quot;HostConfig&quot;&lt;/span&gt;: {
        &lt;span class=&quot;code-quote&quot;&gt;&quot;Memory&quot;&lt;/span&gt;: 268435456,
        &lt;span class=&quot;code-quote&quot;&gt;&quot;PortBindings&quot;&lt;/span&gt;: { &lt;span class=&quot;code-quote&quot;&gt;&quot;8081/tcp&quot;&lt;/span&gt;:  [{ &lt;span class=&quot;code-quote&quot;&gt;&quot;HostPort&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;%p&quot;&lt;/span&gt; }] }
      }
    },
    &lt;span class=&quot;code-quote&quot;&gt;&quot;dockerCMD&quot;&lt;/span&gt;: [ &lt;span class=&quot;code-quote&quot;&gt;&quot;verify.user=&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;&quot;&lt;/span&gt; ],
    &lt;span class=&quot;code-quote&quot;&gt;&quot;dockerPull&quot;&lt;/span&gt;: &lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;,
    &lt;span class=&quot;code-quote&quot;&gt;&quot;env&quot;&lt;/span&gt;: [
      { &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;JAVA_OPTIONS&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;value&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap&quot;&lt;/span&gt; },
      { &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;DB_HOST&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;value&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;10.0.2.15&quot;&lt;/span&gt; },
      { &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;DB_PORT&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;value&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;5432&quot;&lt;/span&gt; },
      { &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;DB_USERNAME&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;value&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;folio_admin&quot;&lt;/span&gt; },
      { &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;DB_PASSWORD&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;value&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;folio_admin&quot;&lt;/span&gt; },
      { &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;DB_DATABASE&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;value&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;okapi_modules&quot;&lt;/span&gt; },
      { &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;DB_QUERYTIMEOUT&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;value&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;30000&quot;&lt;/span&gt; },
      { &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;DB_CHARSET&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;value&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;UTF8&quot;&lt;/span&gt; },
      { &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;DB_MAXPOOLSIZE&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;value&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;5&quot;&lt;/span&gt; }
    ]
  }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                                                            <comment id="192429" author="5c706fbb47a54a6728e59df2" created="Tue, 3 Sep 2019 18:37:12 +0000"  >&lt;p&gt;The example above works well for Okapi deployment on Vagrant. Some issues:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;The &lt;tt&gt;Memory&lt;/tt&gt; setting is in bytes, for gods&apos; sake.&lt;/li&gt;
	&lt;li&gt;I chose to put the memory in the &lt;tt&gt;HostConfig&lt;/tt&gt; rather than adding as part of &lt;tt&gt;JAVA_OPTIONS&lt;/tt&gt; &amp;#8211; this is obviously more portable. For Java 8, this requires using the &lt;tt&gt;UseCGroupMemoryLimitForHeap&lt;/tt&gt; experimental VM option. This behavior is default for Java 10+ (cf. &lt;a href=&quot;https://bugs.openjdk.java.net/browse/JDK-8146115&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://bugs.openjdk.java.net/browse/JDK-8146115&lt;/a&gt;). This would incidentally close 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-1729&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-1729&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Use container memory limits to manage memory in reference environments&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10322?size=medium&quot; /&gt;
            FOLIO-1729
        &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;/li&gt;
	&lt;li&gt;The settings in the &lt;tt&gt;env&lt;/tt&gt; key are meant to show all the available variables, along with providing reasonable defaults. I&apos;m not too happy with the &lt;tt&gt;DB_HOST&lt;/tt&gt; default &amp;#8211; that&apos;s the default host for Vagrant &amp;#8211; but &lt;tt&gt;localhost&lt;/tt&gt; doesn&apos;t make sense, as you would never run the DB in the container.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5cd423bebc70090d6ce241b1&quot; class=&quot;user-hover&quot; rel=&quot;5cd423bebc70090d6ce241b1&quot; data-account-id=&quot;5cd423bebc70090d6ce241b1&quot; accountid=&quot;5cd423bebc70090d6ce241b1&quot; rel=&quot;noreferrer&quot;&gt;Ian Hardy&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; &amp;#8211; thoughts? Does this seem workable?&lt;/p&gt;</comment>
                                                            <comment id="192432" author="5cd423bebc70090d6ce241b1" created="Wed, 4 Sep 2019 13:54:08 +0000"  >&lt;p&gt;One proposal for db host is to set a service in k8s called &quot;postgres&quot; that points to the pg db. In the Vagrant boxes, could create a &quot;postgres&quot; alias that resolves to localhost. That way we could set the default host to the same thing in both cases. Might be a little more convenient, but this doesn&apos;t really solve the problem of having to pick some value that doesn&apos;t work &quot;out of the box&quot; since it depends on some specific infrastructure configuration. &lt;/p&gt;</comment>
                                                            <comment id="192438" author="5c706fbb47a54a6728e59df2" created="Wed, 4 Sep 2019 15:45:33 +0000"  >&lt;p&gt;Here&apos;s what I found in my testing:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Ian&apos;s postgres filler value works just fine on a Vagrant box with an entry in /etc/hosts, so that&apos;s kind of nice&lt;/li&gt;
	&lt;li&gt;Okapi accepts either the empty string, null, or an EnvEntry with no value key for the &lt;tt&gt;DB_QUERYTIMEOUT&lt;/tt&gt; environment entry. RMB, however, apparently does not &amp;#8211; it throws an error trying to convert the value to a number:
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;04 Sep 2019 15:33:29:123 ERROR PostgresClient [4370eqId] For input string: &quot;null&quot;
java.lang.NumberFormatException: For input string: &quot;null&quot;
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[?:1.8.0_181]
    at java.lang.Integer.parseInt(Integer.java:580) ~[?:1.8.0_181]
    at java.lang.Integer.parseInt(Integer.java:615) ~[?:1.8.0_181]
    at org.folio.rest.tools.utils.Envs.lambda$0(Envs.java:48) ~[mod-login-fat.jar:?]
    at java.util.Map.forEach(Map.java:630) ~[?:1.8.0_181]
    at java.util.Collections$UnmodifiableMap.forEach(Collections.java:1505) ~[?:1.8.0_181]
    at org.folio.rest.tools.utils.Envs.allDBConfs(Envs.java:43) ~[mod-login-fat.jar:?]
    at org.folio.rest.persist.PostgresClient.init(PostgresClient.java:458) ~[mod-login-fat.jar:?]
    at org.folio.rest.persist.PostgresClient.&amp;lt;init&amp;gt;(PostgresClient.java:182) ~[mod-login-fat.jar:?]
    at org.folio.rest.persist.PostgresClient.getInstanceInternal(PostgresClient.java:334) ~[mod-login-fat.jar:?]
    at org.folio.rest.persist.PostgresClient.getInstance(PostgresClient.java:353) ~[mod-login-fat.jar:?]
    at org.folio.rest.impl.TenantAPI.tenantExists(TenantAPI.java:143) ~[mod-login-fat.jar:?]
    at org.folio.rest.impl.TenantAPI.lambda$3(TenantAPI.java:218) ~[mod-login-fat.jar:?]
    at io.vertx.core.impl.ContextImpl.lambda$wrapTask$2(ContextImpl.java:339) ~[mod-login-fat.jar:?]
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) [mod-login-fat.jar:?]
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404) [mod-login-fat.jar:?]
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:463) [mod-login-fat.jar:?]
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:886) [mod-login-fat.jar:?]
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [mod-login-fat.jar:?]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This is actually kind of a problem, as we still have potentially quite long-running queries, so setting a timeout might break things. What are opinions? Options are:&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;Omit the &lt;tt&gt;DB_QUERYTIMEOUT&lt;/tt&gt; environment variable from the LaunchDescriptor. The behavior will be that there is no query timeout, so long running queries will just spin until complete.&lt;/li&gt;
	&lt;li&gt;Set the timeout to something high, like 300000ms (5 minutes). Some queries still might break.&lt;/li&gt;
	&lt;li&gt;Set the timeout to something fairly reasonable, like 60000ms, and accept that some queries will almost certainly break.&lt;/li&gt;
&lt;/ol&gt;
</comment>
                                                            <comment id="192446" author="5c706fbb47a54a6728e59df2" created="Wed, 4 Sep 2019 19:40:03 +0000"  >&lt;p&gt;After further conversion, we&apos;ve settled on this as a model:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
  &lt;span class=&quot;code-quote&quot;&gt;&quot;launchDescriptor&quot;&lt;/span&gt;: {
    &lt;span class=&quot;code-quote&quot;&gt;&quot;dockerImage&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;${artifactId}:${version}&quot;&lt;/span&gt;,
    &lt;span class=&quot;code-quote&quot;&gt;&quot;dockerPull&quot;&lt;/span&gt;: &lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;,
    &lt;span class=&quot;code-quote&quot;&gt;&quot;dockerCMD&quot;&lt;/span&gt;: [ &lt;span class=&quot;code-quote&quot;&gt;&quot;verify.user=&lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;&quot;&lt;/span&gt; ],
    &lt;span class=&quot;code-quote&quot;&gt;&quot;dockerArgs&quot;&lt;/span&gt;: {
      &lt;span class=&quot;code-quote&quot;&gt;&quot;HostConfig&quot;&lt;/span&gt;: {
        &lt;span class=&quot;code-quote&quot;&gt;&quot;Memory&quot;&lt;/span&gt;: 268435456,
        &lt;span class=&quot;code-quote&quot;&gt;&quot;PortBindings&quot;&lt;/span&gt;: { &lt;span class=&quot;code-quote&quot;&gt;&quot;8081/tcp&quot;&lt;/span&gt;: [ { &lt;span class=&quot;code-quote&quot;&gt;&quot;HostPort&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;%p&quot;&lt;/span&gt; } ] }
      }
    },
    &lt;span class=&quot;code-quote&quot;&gt;&quot;env&quot;&lt;/span&gt;: [
      { &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;JAVA_OPTIONS&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;value&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap&quot;&lt;/span&gt; },
      { &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;DB_HOST&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;value&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;postgres&quot;&lt;/span&gt; },
      { &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;DB_PORT&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;value&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;5432&quot;&lt;/span&gt; },
      { &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;DB_USERNAME&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;value&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;folio_admin&quot;&lt;/span&gt; },
      { &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;DB_PASSWORD&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;value&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;folio_admin&quot;&lt;/span&gt; },
      { &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;DB_DATABASE&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;value&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;okapi_modules&quot;&lt;/span&gt; },
      { &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;DB_QUERYTIMEOUT&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;value&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;60000&quot;&lt;/span&gt; },
      { &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;DB_CHARSET&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;value&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;UTF-8&quot;&lt;/span&gt; },
      { &lt;span class=&quot;code-quote&quot;&gt;&quot;name&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;DB_MAXPOOLSIZE&quot;&lt;/span&gt;, &lt;span class=&quot;code-quote&quot;&gt;&quot;value&quot;&lt;/span&gt;: &lt;span class=&quot;code-quote&quot;&gt;&quot;5&quot;&lt;/span&gt; }
    ]
  }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I will do some further testing to see what changes would need to be made to prevent Vagrant box builds and the &quot;single server install&quot; document from breaking.&lt;/p&gt;</comment>
                                                            <comment id="192452" author="5c706fbb47a54a6728e59df2" created="Wed, 4 Sep 2019 21:11:22 +0000"  >&lt;p&gt;Since the environment variables set on Okapi&apos;s &lt;tt&gt;/&amp;#95;/env&lt;/tt&gt; endpoint override environment variables in the LaunchDescriptor, the only change required in folio-ansible is to remove the &lt;tt&gt;JAVA_OPTIONS&lt;/tt&gt; memory settings in the &lt;tt&gt;group_vars&lt;/tt&gt; files as module descriptors are updated. No changes are necessary in the single-server install runbook in folio-infrastructure.&lt;/p&gt;</comment>
                                                            <comment id="192458" author="5c706fbb47a54a6728e59df2" created="Fri, 6 Sep 2019 18:04:47 +0000"  >&lt;p&gt;The Ansible roles affected by this change are &lt;tt&gt;okapi-register-modules&lt;/tt&gt; and &lt;tt&gt;okapi-deployment&lt;/tt&gt;, both of which modify the stock LaunchDescriptor for a module based on keys in the &lt;tt&gt;folio&amp;#95;modules&lt;/tt&gt; variable. They operate by &lt;em&gt;overriding&lt;/em&gt; the &lt;tt&gt;env&lt;/tt&gt; key and/or the &lt;tt&gt;dockerCMD&lt;/tt&gt; key.&lt;/p&gt;

&lt;p&gt;Changing this behavior would be tricky, and I&apos;m not sure it&apos;s desirable &amp;#8211; the behavior of overriding is more straightforward and less prone to error than somehow trying to combine the &lt;tt&gt;env&lt;/tt&gt; and &lt;tt&gt;dockerCMD&lt;/tt&gt; lists. Therefore, I think the solution is to update the &lt;tt&gt;group&amp;#95;vars&lt;/tt&gt; files in folio-ansible &lt;b&gt;now&lt;/b&gt; to include the &lt;tt&gt;-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap&lt;/tt&gt; options as well as the memory settings, then giving ourselves the housekeeping task of cleaning up the &lt;tt&gt;group&amp;#95;vars&lt;/tt&gt; files after 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-2234&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-2234&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Add LaunchDescriptor settings to each backend core module repository&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-2234
        &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;
 and 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-2235&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-2235&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Add LaunchDescriptor settings to each backend non-core module repository&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-2235
        &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;
 are complete.&lt;/p&gt;

&lt;p&gt;I&apos;ve created 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-2241&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-2241&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Update group_vars files in folio-ansible to include UseCGroupMemoryLimitForHeap Java option&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-2241
        &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;
 for the needed update, and 
    &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;
 for the eventual cleanup. And with that, I think this spike is closed.&lt;/p&gt;</comment>
                                                            <comment id="192465" author="5bfd62c75f77da6929583d6c" created="Fri, 13 Sep 2019 09:20:57 +0000"  >&lt;p&gt;Can I also suggest the changing of the base image for java 8 to inherit from &lt;a href=&quot;https://hub.docker.com/r/fabric8/java-alpine-openjdk8-jdk&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://hub.docker.com/r/fabric8/java-alpine-openjdk8-jdk&lt;/a&gt;. That image as a base allows default vm memory allocations to be calculated as a ratio of the container limit. Emulating the container memory capabilities of java10+&lt;/p&gt;</comment>
                                                            <comment id="192470" author="5c706fbb47a54a6728e59df2" created="Fri, 13 Sep 2019 12:43:48 +0000"  >&lt;p&gt;Thanks for the comment, &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5bfd62c75f77da6929583d6c&quot; class=&quot;user-hover&quot; rel=&quot;5bfd62c75f77da6929583d6c&quot; data-account-id=&quot;5bfd62c75f77da6929583d6c&quot; accountid=&quot;5bfd62c75f77da6929583d6c&quot; rel=&quot;noreferrer&quot;&gt;steve.osguthorpe&lt;/a&gt;. We do have an open issue for that (
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-1544&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-1544&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;switch to Alpine to shrink docker containers&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-1544
        &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;
), which has been stalled for awhile. Perhaps it is time to pick it back up.&lt;/p&gt;

&lt;p&gt;We also have on our backlog a move to OpenJDK 11 (
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-1772&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-1772&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Upgrade to OpenJDK 11&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;
            FOLIO-1772
        &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;
), which would also address the issue of Java honoring container memory limits.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                            <outwardlinks description="blocks">
                                        <issuelink>
            <issuekey id="81294">FOLIO-2219</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81427">FOLIO-2234</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81428">FOLIO-2235</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="81390">FOLIO-2237</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81478">FOLIO-2334</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81385">FOLIO-2236</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81399">FOLIO-2241</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="81114">FOLIO-1729</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81249">FOLIO-2183</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81403">FOLIO-2242</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="80991">FOLIO-1698</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81397">FOLIO-2240</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|hzx6on:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="1468">CP: sprint 71</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10044" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Story Points</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>3.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10024" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>[CHART] Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Fri, 30 Aug 2019 12:35:55 +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>