<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:19:55 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-2336] continuous folio-snapshot reference env</title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-2336</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;&lt;b&gt;Task&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Set up a new environment called &apos;folio-snapshot-continous&apos; that will operate on the new K8s FOLIO infrastructure. The environment should operate in a fashion similar to existing &apos;folio-snapshot&apos; with the following differences:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;the environment will be updated immediately when new a new backend snapshot container is built and/or when a new UI snapshot artifact is built&lt;/li&gt;
	&lt;li&gt;the environment is updated incrementally, new backend modules are installed using the upgrade method&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
        <key id="81479">FOLIO-2336</key>
            <summary>continuous folio-snapshot reference env</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="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="5cd423bebc70090d6ce241b1">Ian Hardy</assignee>
                                                                <reporter accountid="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d">Jakub Skoczen</reporter>
                                    <labels>
                            <label>platform-backlog</label>
                    </labels>
                <created>Mon, 4 Nov 2019 09:03:39 +0000</created>
                <updated>Wed, 3 Jun 2020 16:40:14 +0000</updated>
                            <resolved>Mon, 10 Feb 2020 14:17:11 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>7</watches>
                                                                <comments>
                                                            <comment id="193929" author="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d" created="Mon, 4 Nov 2019 09:07:06 +0000"  >&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=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=5f9abc1eb45b2e007453f423&quot; class=&quot;user-hover&quot; rel=&quot;5f9abc1eb45b2e007453f423&quot; data-account-id=&quot;5f9abc1eb45b2e007453f423&quot; accountid=&quot;5f9abc1eb45b2e007453f423&quot; rel=&quot;noreferrer&quot;&gt;John Malconian&lt;/a&gt; Guys, can you please help me out flashing out this issue? I&apos;d like us to capture the details of how this env would work &amp;#8211; including what events would trigger what action (commit/PRs to individual mod- and ui- repos, commits/PRs to platform-complete, etc) and how is the upgrade of individual modules performed (e.g Okapi upgrade vs install endpoint, etc).&lt;/p&gt;</comment>
                                                            <comment id="193931" author="5cd423bebc70090d6ce241b1" created="Mon, 4 Nov 2019 14:54:34 +0000"  >&lt;p&gt;Here&apos;s some thoughts to get started, interested to hear what others think as well. &lt;/p&gt;

&lt;p&gt;Since snapshot is a top-down build from the platform I think we&apos;d have a tenant for snapshot, and then start an update by building platform-complete/core and then post the resulting list of modules to the install endpoint to trigger an update on the snapshot tenant. We&apos;d probably want to make sure the stripes builds take place in the kubernetes cluster since building stripes is fairly expensive. &lt;/p&gt;

&lt;p&gt;Ideally we&apos;d do this for a commit to an individual module (either ui or mod) since that would be really continuous, but I can see backing off that if there are any problems from overlapping updates--would be interesting to try.&lt;/p&gt;

&lt;p&gt;Some more open questions:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;when does okapi get upgraded?&lt;/li&gt;
	&lt;li&gt;how long is data persisted?&lt;/li&gt;
&lt;/ul&gt;
</comment>
                                                            <comment id="193935" author="5cd423bebc70090d6ce241b1" created="Tue, 12 Nov 2019 15:18:36 +0000"  >&lt;p&gt;Since migrations aren&apos;t implemented by the modules, we could start by discarding the tenant and rebuilding the tenant every few hours. &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; Are you OK with proceeding this way or would you prefer to hold off until upgrades are available?&lt;/p&gt;</comment>
                                                            <comment id="193938" author="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d" created="Mon, 18 Nov 2019 12:07:28 +0000"  >&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; I think we should not discard the tenant but upgrade the modules within the tenant. This is an important differentiating factor from the existing snapshot environment.&lt;/p&gt;

&lt;p&gt;The assumption is that even if some modules do not provide migrations during &quot;init&quot;, they will provide compatible sample and reference data that will overlay over the existing data.&lt;/p&gt;</comment>
                                                            <comment id="193942" author="5cd423bebc70090d6ce241b1" created="Thu, 21 Nov 2019 20:39:02 +0000"  >&lt;p&gt;Increased nginx ingress controler&apos;s proxy-body-size and proxy-read-timeout. Was seeing a 504 from nginx on the call to /_/proxy/tenant/{}/install. &lt;/p&gt;

&lt;p&gt;List of available nginx annotations for configuration: &lt;a href=&quot;https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#custom-timeouts&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#custom-timeouts&lt;/a&gt;&lt;br/&gt;
Used this approach for updating the controller: &lt;a href=&quot;https://stackoverflow.com/questions/49918313/413-error-with-kubernetes-and-nginx-ingress-controller&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://stackoverflow.com/questions/49918313/413-error-with-kubernetes-and-nginx-ingress-controller&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also needed to update the timeout for the AWS ALB instnance. Increased to 300s on the AWS console.&lt;/p&gt;</comment>
                                                            <comment id="193945" author="5cd423bebc70090d6ce241b1" created="Fri, 22 Nov 2019 21:12:14 +0000"  >&lt;p&gt;Frontend: &lt;a href=&quot;https://snapshot-core.s3.amazonaws.com/index.html&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://snapshot-core.s3.amazonaws.com/index.html&lt;/a&gt;&lt;br/&gt;
snapshot_core_admin/admin&lt;/p&gt;

&lt;p&gt;Preserving the tenant here as &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; recommends and upgrading modules.&lt;/p&gt;

&lt;p&gt;A couple notes to myself on problems that came up:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;timeouts set too short on various proxies as described above&lt;/li&gt;
	&lt;li&gt;broken tenant or insufficiently cleaned up tenant leaves roles in rds. Modules will fail during init if the role they&apos;re trying to create already exists&lt;/li&gt;
	&lt;li&gt;need to decide what action if any to take if integration tests pass/fail&lt;/li&gt;
&lt;/ul&gt;
</comment>
                                                            <comment id="193949" author="5cd423bebc70090d6ce241b1" created="Mon, 25 Nov 2019 13:53:58 +0000"  >&lt;p&gt;Looks like loading sample/reference data is not idempotent, below are logs from mod inventory storage on tenant init (trying to upgrade to latest snapshot).  Right now loadsample/reference are called for all modules at once when the module list is posted to `/_/proxy/tenants/&lt;/p&gt;
{tenant}
&lt;p&gt;/install`&lt;/p&gt;

&lt;p&gt;One approach might be to get a list of currently enabled modules before posting the list to install, and then post required modules one at a time and set the data parameters depending on whether the module is present already. Another might be to insist that the data loading scripts are idempotent. Open to other suggestions.&lt;/p&gt;

&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;25 Nov 2019 13:37:14:061 ERROR PostgreSQLConnection$failQueryPromise$1 reqId=276355/proxy;361332/tenant Setting error on future java.util.concurrent.CompletableFuture@4bf04b04[Not completed, 1 dependents]

25 Nov 2019 13:37:14:062 ERROR PostgreSQLConnection Error , message -&amp;gt; ErrorMessage(fields=[(Severity, ERROR), (V, ERROR), (SQLSTATE, 23505), (Message, duplicate key value violates unique constraint &quot;instance_pkey&quot;), (Detail, Key (id)=(8be05cf5-fb4f-4752-8094-8e179d08fb99) already exists.), (s, snapshot_core_mod_inventory_storage), (t, instance), (n, instance_pkey), (File, nbtinsert.c), (Line, 534), (Routine, _bt_check_unique)])

25 Nov 2019 13:37:14:062 INFO LogUtil [46529247eqId] org.folio.rest.RestVerticle start invoking postInstanceStorageInstances

25 Nov 2019 13:37:14:062 ERROR PostgreSQLConnection Error on connection

com.github.jasync.sql.db.postgresql.exceptions.GenericDatabaseException: ErrorMessage(fields=[(Severity, ERROR), (V, ERROR), (SQLSTATE, 23505), (Message, duplicate key value violates unique constraint &quot;instance_pkey&quot;), (Detail, Key (id)=(8be05cf5-fb4f-4752-8094-8e179d08fb99) already exists.), (s, snapshot_core_mod_inventory_storage), (t, instance), (n, instance_pkey), (File, nbtinsert.c), (Line, 534), (Routine, _bt_check_unique)])
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                                                            <comment id="193953" author="5cd423bebc70090d6ce241b1" created="Thu, 12 Dec 2019 20:26:25 +0000"  >&lt;p&gt;Reported probelms with mod-inventory, mod-template engine and then deleted previous tenant for a clean start.&lt;/p&gt;

&lt;p&gt;New tenant is available here again:&lt;br/&gt;
Frontend: &lt;a href=&quot;https://snapshot-core.s3.amazonaws.com/index.html&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://snapshot-core.s3.amazonaws.com/index.html&lt;/a&gt;&lt;br/&gt;
snapshot_core_admin/admin&lt;/p&gt;

&lt;p&gt;Need to do some more rebuilds/updates when fresh snapshots are published to verify.&lt;/p&gt;</comment>
                                                            <comment id="193956" author="5cd423bebc70090d6ce241b1" created="Tue, 4 Feb 2020 18:54:52 +0000"  >&lt;p&gt; todo:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;verify that parameter to turn off loadSample is working properly (seeing some duplicates)&lt;/li&gt;
	&lt;li&gt;do call loadReference every time (Marc and Jakub suggest this should be idempotent)&lt;/li&gt;
&lt;/ul&gt;
</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                                                <inwardlinks description="is blocked by">
                                        <issuelink>
            <issuekey id="81481">FOLIO-2338</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="55974">MODINVSTOR-397</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="76679">MODTEMPENG-37</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="56662">RMB-527</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|hzx6nl:5ei</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="1860">CP: sprint 77</customfieldvalue>
    <customfieldvalue id="1165">CP: sprint 78</customfieldvalue>
    <customfieldvalue id="1166">CP: sprint 79</customfieldvalue>
    <customfieldvalue id="1167">CP: sprint 80/81</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>Mon, 4 Nov 2019 14:54:34 +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>