<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:33:08 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>[OPNFLWPLUG-690] He plugin: Statistics collector thread may be blocked forever.</title>
                <link>https://jira.opendaylight.org/browse/OPNFLWPLUG-690</link>
                <project id="10155" key="OPNFLWPLUG">OpenFlowPlugin</project>
                    <description>&lt;p&gt;Version:&lt;br/&gt;
  master (49cc69e154249c8cd0942905fa321e6b4e0fb46d)&lt;/p&gt;

&lt;p&gt;Steps to reproduce:&lt;br/&gt;
  1. Run controller and openflowplugin-he.&lt;br/&gt;
  2. Start mininet, and then stop it.&lt;br/&gt;
  3. Repeat step 2 again and again.&lt;/p&gt;

&lt;p&gt;Step 2 may record the following log.&lt;/p&gt;

&lt;p&gt;2016-05-19 19:57:42,171 | WARN  | Pool-8-worker-11 | StatRpcMsgManagerImpl            | 179 - org.opendaylight.openflowplugin.applications.statistics-manager - 0.3.0.SNAPSHOT | Response Registration for Statistics RPC call fail!&lt;br/&gt;
org.opendaylight.controller.md.sal.dom.api.DOMRpcImplementationNotAvailableException: No local or remote implementation available for rpc AbsoluteSchemaPath&lt;/p&gt;
{path=[(urn:opendaylight:group:statistics?revision=2013-11-11)get-all-group-statistics]}
&lt;p&gt;	at org.opendaylight.controller.remote.rpc.RemoteRpcImplementation$1.onComplete(RemoteRpcImplementation.java:66)&lt;span class=&quot;error&quot;&gt;&amp;#91;161:org.opendaylight.controller.sal-remoterpc-connector:1.4.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.remote.rpc.RemoteRpcImplementation$1.onComplete(RemoteRpcImplementation.java:56)&lt;span class=&quot;error&quot;&gt;&amp;#91;161:org.opendaylight.controller.sal-remoterpc-connector:1.4.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.OnComplete.internal(Future.scala:259)&lt;span class=&quot;error&quot;&gt;&amp;#91;146:com.typesafe.akka.actor:2.4.4&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.OnComplete.internal(Future.scala:256)&lt;span class=&quot;error&quot;&gt;&amp;#91;146:com.typesafe.akka.actor:2.4.4&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.japi$CallbackBridge.apply(Future.scala:186)&lt;span class=&quot;error&quot;&gt;&amp;#91;146:com.typesafe.akka.actor:2.4.4&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.japi$CallbackBridge.apply(Future.scala:183)&lt;span class=&quot;error&quot;&gt;&amp;#91;146:com.typesafe.akka.actor:2.4.4&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)&lt;span class=&quot;error&quot;&gt;&amp;#91;142:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at scala.concurrent.impl.ExecutionContextImpl$AdaptedForkJoinTask.exec(ExecutionContextImpl.scala:121)&lt;span class=&quot;error&quot;&gt;&amp;#91;142:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)&lt;span class=&quot;error&quot;&gt;&amp;#91;142:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)&lt;span class=&quot;error&quot;&gt;&amp;#91;142:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)&lt;span class=&quot;error&quot;&gt;&amp;#91;142:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)&lt;span class=&quot;error&quot;&gt;&amp;#91;142:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8&amp;#93;&lt;/span&gt;&lt;/p&gt;


&lt;p&gt;If that warning is logged, statistics collector thread is being blocked and no one wakes it up.&lt;/p&gt;

&lt;p&gt;&quot;odl-stat-collector-1-thread-0&quot; #936 prio=5 os_prio=0 tid=0x00007f68ac054000 nid=0x5914 waiting on condition &lt;span class=&quot;error&quot;&gt;&amp;#91;0x00007f67dbb4f000&amp;#93;&lt;/span&gt;&lt;br/&gt;
   java.lang.Thread.State: WAITING (parking)&lt;br/&gt;
	at sun.misc.Unsafe.park(Native Method)&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;parking to wait for  &amp;lt;0x000000008bf40fd8&amp;gt; (a com.google.common.util.concurrent.AbstractFuture$Sync)&lt;br/&gt;
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)&lt;br/&gt;
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)&lt;br/&gt;
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:997)&lt;br/&gt;
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1304)&lt;br/&gt;
	at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:285)&lt;br/&gt;
	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)&lt;br/&gt;
	at org.opendaylight.openflowplugin.applications.statistics.manager.impl.StatPermCollectorImpl.collectStatCrossNetwork(StatPermCollectorImpl.java:327)&lt;br/&gt;
	at org.opendaylight.openflowplugin.applications.statistics.manager.impl.StatPermCollectorImpl.run(StatPermCollectorImpl.java:248)&lt;br/&gt;
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)&lt;br/&gt;
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)&lt;br/&gt;
	at java.lang.Thread.run(Thread.java:745)&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="27958">OPNFLWPLUG-690</key>
            <summary>He plugin: Statistics collector thread may be blocked forever.</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="Avishnoi">Anil Vishnoi</assignee>
                                    <reporter username="yasuda">Shigeru Yasuda</reporter>
                        <labels>
                    </labels>
                <created>Thu, 19 May 2016 11:52:36 +0000</created>
                <updated>Mon, 27 Sep 2021 09:01:48 +0000</updated>
                            <resolved>Fri, 8 Jul 2016 14:22:18 +0000</resolved>
                                                                    <component>General</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="57884" author="yasuda" created="Thu, 19 May 2016 11:54:43 +0000"  >&lt;p&gt;The root cause is StatRpcMsgManagerImpl.registrationRpcFutureCallBack().&lt;/p&gt;

&lt;p&gt;The callback added by registrationRpcFutureCallBack() sets the transaction ID to resultTransId if it sends a MULTIPART_REQUEST successfully.&lt;br/&gt;
But on failure, it doesn&apos;t set any value to resultTransId. So statistics collector thread never returns from resultTransId.get().&lt;/p&gt;

&lt;p&gt;The callback needs to wake up statistics collector thread in any case.&lt;br/&gt;
If RPC fails, an exception that indicates the cause needs to be set to resultTransId.&lt;/p&gt;</comment>
                            <comment id="57885" author="yasuda" created="Thu, 19 May 2016 11:56:05 +0000"  >&lt;p&gt;&lt;a href=&quot;https://git.opendaylight.org/gerrit/39102&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/39102&lt;/a&gt;  (master)&lt;/p&gt;</comment>
                            <comment id="57886" author="shuva.jyoti.kar.87@gmail.com" created="Sat, 11 Jun 2016 17:23:40 +0000"  >&lt;p&gt;changes look good !&lt;/p&gt;

&lt;p&gt;cherry-picked the same to stable/Be:&lt;br/&gt;
&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/40194/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/40194/&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="57887" author="shuva.jyoti.kar.87@gmail.com" created="Sat, 11 Jun 2016 17:40:25 +0000"  >&lt;p&gt;oops pasted the gerrit at the wrong place. &lt;br/&gt;
changes do look good&lt;/p&gt;</comment>
                            <comment id="57888" author="yasuda" created="Fri, 24 Jun 2016 00:09:43 +0000"  >&lt;p&gt;&lt;a href=&quot;https://git.opendaylight.org/gerrit/40788&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/40788&lt;/a&gt;  (stable/beryllium)&lt;/p&gt;</comment>
                    </comments>
                    <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>5916</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=5916]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10206" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Issue Type</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10300"><![CDATA[Bug]]></customfieldvalue>

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

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