<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 19:56:38 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 append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>OpenDaylight JIRA</title>
    <link>https://jira.opendaylight.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>8.20.10</version>
        <build-number>820010</build-number>
        <build-date>22-06-2022</build-date>
    </build-info>


<item>
            <title>[CONTROLLER-1864] A 8s &quot;non-GC world stop JVM pause&quot; during snapshot writes</title>
                <link>https://jira.opendaylight.org/browse/CONTROLLER-1864</link>
                <project id="10113" key="CONTROLLER">controller</project>
                    <description>&lt;p&gt;Attached GCLog.log.0.current has this:&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;2018-09-05T18:23:40.277+0000: 39892.345: Total time for which application threads were stopped: 8.3785112 seconds, Stopping threads took: 8.3765855 seconds&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;Attached Run.jfr (7z) provided by Ericsson, from their internal downstream distribution based on Boron. (This is the same that they made available via the filehosting.org &lt;a href=&quot;https://stackoverflow.com/questions/52295844/g1-gc-large-background-i-o-causing-jvm-unresponsive-a-8sec-pause&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;link on this SO QA&lt;/a&gt;. Best analyzed using the JDK Mission Control from OpenJDK v11 from &lt;a href=&quot;http://jdk.java.net/jmc/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://jdk.java.net/jmc/&lt;/a&gt;. Produced via &lt;a href=&quot;https://wiki.opendaylight.org/view/HowToProfilePerformance&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://wiki.opendaylight.org/view/HowToProfilePerformance&lt;/a&gt;.)&lt;/p&gt;</description>
                <environment></environment>
        <key id="30774">CONTROLLER-1864</key>
            <summary>A 8s &quot;non-GC world stop JVM pause&quot; during snapshot writes</summary>
                <type id="10104" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="3" iconUrl="https://jira.opendaylight.org/images/icons/priorities/major.svg">Medium</priority>
                        <status id="5" iconUrl="https://jira.opendaylight.org/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10000">Done</resolution>
                                        <assignee username="vorburger">Michael Vorburger</assignee>
                                    <reporter username="vorburger">Michael Vorburger</reporter>
                        <labels>
                    </labels>
                <created>Thu, 20 Sep 2018 02:11:11 +0000</created>
                <updated>Sat, 22 Sep 2018 14:30:13 +0000</updated>
                            <resolved>Sat, 22 Sep 2018 14:26:53 +0000</resolved>
                                    <version>Boron</version>
                                    <fixVersion>Carbon</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="65012" author="vorburger" created="Sat, 22 Sep 2018 14:26:33 +0000"  >&lt;p&gt;There was no &quot;fix&quot; here, but I&apos;m filing this analysis here as an (immediately closed)&#160;JIRA issue for future ref:&lt;br/&gt;
&#160;If we very carefully comb over &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.opendaylight.org/images/icons/emoticons/wink.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&#160;E// attached initial/akka.conf, we can see that it is missing this line which upstream has:&lt;br/&gt;
&#160;&lt;br/&gt;
&lt;tt&gt;snapshot-store.local.class = &quot;org.opendaylight.controller.cluster.persistence.LocalSnapshotStore&quot;&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;Thereforefore&#160;they were still&#160;using the default&#160;akka.persistence.snapshot.local.LocalSnapshotStore (seen in the stack trace yesterdday, below) instead of ODL&apos;s custom, and optimzed,&#160;org.opendaylight.controller.cluster.persistence.LocalSnapshotStore! Either you &quot;just forgot&quot; that, or, more likely, that was made after Boron... see here for the full history of this story in&#160;&lt;a href=&quot;https://jira.opendaylight.org/browse/CONTROLLER-1576&quot; title=&quot;OOM when persisting a snapshot of the datastore that is bigger than 2G&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CONTROLLER-1576&quot;&gt;&lt;del&gt;CONTROLLER-1576&lt;/del&gt;&lt;/a&gt; and:&lt;/p&gt;

&lt;p&gt;*&#160;&lt;a href=&quot;https://github.com/opendaylight/controller/blob/master/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/persistence/LocalSnapshotStore.java&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/opendaylight/controller/blob/master/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/persistence/LocalSnapshotStore.java&lt;/a&gt;&lt;br/&gt;
*&#160;&lt;a href=&quot;https://github.com/opendaylight/controller/commits/master/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/persistence/LocalSnapshotStore.java&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/opendaylight/controller/commits/master/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/persistence/LocalSnapshotStore.java&lt;/a&gt;&lt;br/&gt;
*&#160;&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/q/topic:bug/7521&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/q/topic:bug/7521&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before this fix with a custom LocalSnapshotStore, the default one from Akka would create (x3 ?) a HUGE byte[] instead of &quot;streaming directly to the file like the new custom one, so the JVM was not able to park it mid-stream, as Akka&apos;s version may hold up the safepoint while serializing to a byte[]&quot; (summarized from private email exchange with Tom).&lt;br/&gt;
&#160;&lt;br/&gt;
They als ran ODL with a huge 24 GB heap, which does not help for GC, saying &quot;&lt;span class=&quot;error&quot;&gt;&amp;#91;Dhiman&amp;#93;&lt;/span&gt; The reason for huge heap size is i) to tackle with huge memory allocation during PM counter&#8217;s serialization (jolokia)&quot;, and that problem was solved in Jolokia 2.5 years ago, see &lt;a href=&quot;https://github.com/rhuss/jolokia/issues/391&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/rhuss/jolokia/issues/391&lt;/a&gt;; &quot;and ii) Humongous allocation for huge byte array creations before writing the snapshots&quot; which was solved by &lt;a href=&quot;https://jira.opendaylight.org/browse/CONTROLLER-1576&quot; title=&quot;OOM when persisting a snapshot of the datastore that is bigger than 2G&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CONTROLLER-1576&quot;&gt;&lt;del&gt;CONTROLLER-1576&lt;/del&gt;&lt;/a&gt; (above) 1.5 years ago, according to the JavaDoc on org.opendaylight.controller.cluster.persistence.LocalSnapshotStore. &lt;/p&gt;

&lt;p&gt;PS: Earlier private email about this problem suspected mmp memory mapping files related issues from LevelDB (native or pure Java impl) blocking the world before GC, but that was a wrong initial conclusion; the snapshot (contrary to the journal) actually has absolutely nothing to do with LevelDB.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="26130">CONTROLLER-1576</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="30775">OVSDB-469</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="14957" name="GCLog.log.0.current" size="6005222" author="vorburger" created="Sat, 22 Sep 2018 14:20:48 +0000"/>
                            <attachment id="14954" name="Run.7z" size="5754841" author="vorburger" created="Thu, 20 Sep 2018 02:11:41 +0000"/>
                            <attachment id="14955" name="configuration_factory_akka.conf" size="3220" author="vorburger" created="Sat, 22 Sep 2018 14:20:38 +0000"/>
                            <attachment id="14956" name="configuration_initial_akka.conf" size="3181" author="vorburger" created="Sat, 22 Sep 2018 14:20:38 +0000"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_11400" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i03ixz:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>