<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 19:55:53 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-1576] OOM when persisting a snapshot of the datastore that is bigger than 2G</title>
                <link>https://jira.opendaylight.org/browse/CONTROLLER-1576</link>
                <project id="10113" key="CONTROLLER">controller</project>
                    <description>&lt;p&gt;Using Stable/Boron.&lt;br/&gt;
When datastore grew to a certain size, I received an OOM from the snapshot operation. After analysis the conclusion was that the snapshot is being serialized to a single byte[] and if the size is bigger than 2G, the code of ByteArrayOutputStream will throw an OOM error:&lt;br/&gt;
  private static int hugeCapacity(int minCapacity) &lt;/p&gt;
{
        if (minCapacity &amp;lt; 0) // overflow
            throw new OutOfMemoryError();
        return (minCapacity &amp;gt; MAX_ARRAY_SIZE) ?
            Integer.MAX_VALUE :
            MAX_ARRAY_SIZE;
    }


&lt;p&gt;Log:&lt;/p&gt;

&lt;p&gt;Uncaught error from thread &lt;span class=&quot;error&quot;&gt;&amp;#91;opendaylight-cluster-data-akka.actor.default-dispatcher-54&amp;#93;&lt;/span&gt; shutting down JVM since &apos;akka.jvm-exit-on-fatal-error&apos; is enabled for ActorSystem&lt;span class=&quot;error&quot;&gt;&amp;#91;opendaylight-cluster-data&amp;#93;&lt;/span&gt;&lt;br/&gt;
java.lang.OutOfMemoryError&lt;br/&gt;
        at java.io.ByteArrayOutputStream.hugeCapacity(ByteArrayOutputStream.java:123)&lt;br/&gt;
        at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:117)&lt;br/&gt;
        at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)&lt;br/&gt;
        at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:153)&lt;br/&gt;
        at java.io.DataOutputStream.write(DataOutputStream.java:107)&lt;br/&gt;
        at java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1877)&lt;br/&gt;
        at java.io.ObjectOutputStream$BlockDataOutputStream.write(ObjectOutputStream.java:1808)&lt;br/&gt;
        at java.io.DataOutputStream.writeInt(DataOutputStream.java:200)&lt;br/&gt;
        at java.io.ObjectOutputStream$BlockDataOutputStream.writeInt(ObjectOutputStream.java:1943)&lt;br/&gt;
        at java.io.ObjectOutputStream.writeInt(ObjectOutputStream.java:797)&lt;br/&gt;
        at org.opendaylight.controller.cluster.datastore.node.utils.stream.AbstractNormalizedNodeDataOutput.writeInt(AbstractNormalizedNodeDataOutput.java:107)&lt;br/&gt;
        at org.opendaylight.controller.cluster.datastore.node.utils.stream.NormalizedNodeOutputStreamWriter.writeString(NormalizedNodeOutputStreamWriter.java:60)&lt;br/&gt;
        at org.opendaylight.controller.cluster.datastore.node.utils.stream.NormalizedNodeOutputStreamWriter.writeQName(NormalizedNodeOutputStreamWriter.java:47)&lt;br/&gt;
        at org.opendaylight.controller.cluster.datastore.node.utils.stream.AbstractNormalizedNodeDataOutput.writeKeyValueMap(AbstractNormalizedNodeDataOutput.java:400)&lt;br/&gt;
        at org.opendaylight.controller.cluster.datastore.node.utils.stream.AbstractNormalizedNodeDataOutput.startMapEntryNode(AbstractNormalizedNodeDataOutput.java:250)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter$OrderedNormalizedNodeWriter.writeMapEntryNode(NormalizedNodeWriter.java:267)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.wasProcessedAsCompositeNode(NormalizedNodeWriter.java:208)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.write(NormalizedNodeWriter.java:100)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.writeChildren(NormalizedNodeWriter.java:171)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.wasProcessedAsCompositeNode(NormalizedNodeWriter.java:238)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.write(NormalizedNodeWriter.java:100)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.writeChildren(NormalizedNodeWriter.java:171)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.wasProcessedAsCompositeNode(NormalizedNodeWriter.java:196)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.write(NormalizedNodeWriter.java:100)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.writeChildren(NormalizedNodeWriter.java:171)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter$OrderedNormalizedNodeWriter.writeMapEntryNode(NormalizedNodeWriter.java:282)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.wasProcessedAsCompositeNode(NormalizedNodeWriter.java:208)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.write(NormalizedNodeWriter.java:100)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.writeChildren(NormalizedNodeWriter.java:171)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.wasProcessedAsCompositeNode(NormalizedNodeWriter.java:238)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.write(NormalizedNodeWriter.java:100)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.writeChildren(NormalizedNodeWriter.java:171)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter$OrderedNormalizedNodeWriter.writeMapEntryNode(NormalizedNodeWriter.java:282)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.wasProcessedAsCompositeNode(NormalizedNodeWriter.java:208)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.write(NormalizedNodeWriter.java:100)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.writeChildren(NormalizedNodeWriter.java:171)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.wasProcessedAsCompositeNode(NormalizedNodeWriter.java:238)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.write(NormalizedNodeWriter.java:100)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.writeChildren(NormalizedNodeWriter.java:171)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.wasProcessedAsCompositeNode(NormalizedNodeWriter.java:223)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.write(NormalizedNodeWriter.java:100)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.writeChildren(NormalizedNodeWriter.java:171)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter$OrderedNormalizedNodeWriter.writeMapEntryNode(NormalizedNodeWriter.java:282)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.wasProcessedAsCompositeNode(NormalizedNodeWriter.java:208)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.write(NormalizedNodeWriter.java:100)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.writeChildren(NormalizedNodeWriter.java:171)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.wasProcessedAsCompositeNode(NormalizedNodeWriter.java:238)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.write(NormalizedNodeWriter.java:100)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.writeChildren(NormalizedNodeWriter.java:171)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.wasProcessedAsCompositeNode(NormalizedNodeWriter.java:196)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.write(NormalizedNodeWriter.java:100)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.writeChildren(NormalizedNodeWriter.java:171)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.wasProcessedAsCompositeNode(NormalizedNodeWriter.java:196)&lt;br/&gt;
        at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.write(NormalizedNodeWriter.java:100)&lt;br/&gt;
        at org.opendaylight.controller.cluster.datastore.node.utils.stream.AbstractNormalizedNodeDataOutput.writeNormalizedNode(AbstractNormalizedNodeDataOutput.java:157)&lt;br/&gt;
        at org.opendaylight.controller.cluster.datastore.utils.SerializationUtils.serializeNormalizedNode(SerializationUtils.java:90)&lt;br/&gt;
        at org.opendaylight.controller.cluster.datastore.persisted.MetadataShardDataTreeSnapshot$Proxy.writeExternal(MetadataShardDataTreeSnapshot.java:56)&lt;br/&gt;
        at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1459)&lt;br/&gt;
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1430)&lt;br/&gt;
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)&lt;br/&gt;
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)&lt;br/&gt;
        at org.opendaylight.controller.cluster.datastore.persisted.AbstractVersionedShardDataTreeSnapshot.versionedSerialize(AbstractVersionedShardDataTreeSnapshot.java:77)&lt;br/&gt;
        at org.opendaylight.controller.cluster.datastore.persisted.AbstractVersionedShardDataTreeSnapshot.serialize(AbstractVersionedShardDataTreeSnapshot.java:95)&lt;br/&gt;
        at org.opendaylight.controller.cluster.datastore.actors.ShardSnapshotActor.handleReceive(ShardSnapshotActor.java:54)&lt;br/&gt;
        at org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor.onReceive(AbstractUntypedActor.java:26)&lt;br/&gt;
        at org.opendaylight.controller.cluster.common.actor.MeteringBehavior.apply(MeteringBehavior.java:97)&lt;br/&gt;
        at akka.actor.ActorCell$$anonfun$become$1.applyOrElse(ActorCell.scala:544)&lt;br/&gt;
        at akka.actor.Actor$class.aroundReceive(Actor.scala:484)&lt;br/&gt;
        at akka.actor.UntypedActor.aroundReceive(UntypedActor.scala:95)&lt;br/&gt;
        at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)&lt;br/&gt;
        at akka.actor.ActorCell.invoke(ActorCell.scala:495)&lt;br/&gt;
        at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)&lt;br/&gt;
        at akka.dispatch.Mailbox.run(Mailbox.scala:224)&lt;br/&gt;
        at akka.dispatch.Mailbox.exec(Mailbox.scala:234)&lt;br/&gt;
        at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)&lt;br/&gt;
        at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)&lt;br/&gt;
        at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)&lt;br/&gt;
        at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)&lt;br/&gt;
        Suppressed: java.lang.OutOfMemoryError&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="26130">CONTROLLER-1576</key>
            <summary>OOM when persisting a snapshot of the datastore that is bigger than 2G</summary>
                <type id="10104" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10303&amp;avatarType=issuetype">Bug</type>
                                                <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="tpantelis">Tom Pantelis</assignee>
                                    <reporter username="guy.sela@hpe.com">Guy Sela</reporter>
                        <labels>
                    </labels>
                <created>Wed, 11 Jan 2017 09:22:08 +0000</created>
                <updated>Tue, 25 Jul 2023 08:24:18 +0000</updated>
                            <resolved>Wed, 1 Mar 2017 01:26:30 +0000</resolved>
                                                                    <component>clustering</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="51680" author="colin@colindixon.com" created="Thu, 19 Jan 2017 21:22:22 +0000"  >&lt;p&gt;Out of curiosity, how critical do we feel fixing this is? Is it critical to get it fixed in Carbon? I&apos;m just trying to understand how immediate the needs are here.&lt;/p&gt;</comment>
                            <comment id="51681" author="guy.sela@hpe.com" created="Sun, 22 Jan 2017 09:24:04 +0000"  >&lt;p&gt;For our deployments, it is the upper bound for the scale currently, so it is very important. &lt;br/&gt;
Working with full mesh of tunnels in netvirt is blocked in 100 computes.&lt;br/&gt;
Without full mesh, I can&apos;t give you the exact number, but from analyzing the histogram of the heap, we will definitely be blocked on a number that is lower than what we need.&lt;/p&gt;</comment>
                            <comment id="51682" author="tpantelis" created="Wed, 25 Jan 2017 13:17:00 +0000"  >&lt;p&gt;Patch series: &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/q/status:open+project:controller+branch:master+topic:file_backed_snapshots&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/q/status:open+project:controller+branch:master+topic:file_backed_snapshots&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The remaining issue is that akka&apos;s snapshot store serializes the snapshot payload to a byte[] before persisting to disk se we&apos;ll run into the same limit issue. To fix this we&apos;ll have to write our own snapshot store implementation that serializes the payload directly to the file.&lt;/p&gt;</comment>
                            <comment id="51683" author="tpantelis" created="Tue, 31 Jan 2017 15:18:24 +0000"  >&lt;p&gt;Full list of patches: &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/q/status:open+project:controller+branch:master+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/status:open+project:controller+branch:master+topic:bug/7521&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="65013" author="vorburger" created="Sat, 22 Sep 2018 14:30:14 +0000"  >&lt;p&gt;Just for the record: This (or rather the lack of this in an old version) came up again in &lt;a href=&quot;https://jira.opendaylight.org/browse/CONTROLLER-1864&quot; title=&quot;A 8s &amp;quot;non-GC world stop JVM pause&amp;quot; during snapshot writes&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CONTROLLER-1864&quot;&gt;&lt;del&gt;CONTROLLER-1864&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="30774">CONTROLLER-1864</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </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_10208" key="com.atlassian.jira.plugin.system.customfieldtypes:textfield">
                        <customfieldname>External issue ID</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>7521</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10201" key="com.atlassian.jira.plugin.system.customfieldtypes:url">
                        <customfieldname>External issue URL</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[https://bugs.opendaylight.org/show_bug.cgi?id=7521]]></customfieldvalue>

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

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