<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 19:55:45 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-1518] DataChangeListener is not notified of DS change occasionally</title>
                <link>https://jira.opendaylight.org/browse/CONTROLLER-1518</link>
                <project id="10113" key="CONTROLLER">controller</project>
                    <description>&lt;p&gt;We have observed that DataChangeListener was not notified of data change occasionally.&lt;br/&gt;
This issue happens on the master branch (for Boron development).&lt;/p&gt;

&lt;p&gt;When the issue happened, we observed the following exception was caused during DS update.&lt;/p&gt;


&lt;p&gt;2016-05-16 15:17:21,371 | ERROR | lt-dispatcher-32 | OneForOneStrategy                | 184 - com.typesafe.akka.slf4j - 2.4.4 | This stopwatch is already running.&lt;br/&gt;
java.lang.IllegalStateException: This stopwatch is already running.&lt;br/&gt;
	at com.google.common.base.Preconditions.checkState(Preconditions.java:173)&lt;span class=&quot;error&quot;&gt;&amp;#91;83:com.google.guava:18.0.0&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at com.google.common.base.Stopwatch.start(Stopwatch.java:160)&lt;span class=&quot;error&quot;&gt;&amp;#91;83:com.google.guava:18.0.0&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.cluster.datastore.DefaultShardDataChangeListenerPublisher.publishChanges(DefaultShardDataChangeListenerPublisher.java:59)&lt;span class=&quot;error&quot;&gt;&amp;#91;199:org.opendaylight.controller.sal-distributed-datastore:1.4.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.cluster.datastore.ShardDataTreeNotificationPublisherActor$PublishNotifications.publish(ShardDataTreeNotificationPublisherActor.java:46)&lt;span class=&quot;error&quot;&gt;&amp;#91;199:org.opendaylight.controller.sal-distributed-datastore:1.4.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.cluster.datastore.ShardDataTreeNotificationPublisherActor$PublishNotifications.access$000(ShardDataTreeNotificationPublisherActor.java:33)&lt;span class=&quot;error&quot;&gt;&amp;#91;199:org.opendaylight.controller.sal-distributed-datastore:1.4.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.cluster.datastore.ShardDataTreeNotificationPublisherActor.handleReceive(ShardDataTreeNotificationPublisherActor.java:25)&lt;span class=&quot;error&quot;&gt;&amp;#91;199:org.opendaylight.controller.sal-distributed-datastore:1.4.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor.onReceive(AbstractUntypedActor.java:25)&lt;span class=&quot;error&quot;&gt;&amp;#91;195:org.opendaylight.controller.sal-clustering-commons:1.4.0.SNAPSHOT&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:165)&lt;span class=&quot;error&quot;&gt;&amp;#91;183:com.typesafe.akka.actor:2.4.4&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.actor.Actor$class.aroundReceive(Actor.scala:482)&lt;span class=&quot;error&quot;&gt;&amp;#91;183:com.typesafe.akka.actor:2.4.4&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.actor.UntypedActor.aroundReceive(UntypedActor.scala:95)&lt;span class=&quot;error&quot;&gt;&amp;#91;183:com.typesafe.akka.actor:2.4.4&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)&lt;span class=&quot;error&quot;&gt;&amp;#91;183:com.typesafe.akka.actor:2.4.4&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.actor.ActorCell.invoke(ActorCell.scala:495)&lt;span class=&quot;error&quot;&gt;&amp;#91;183:com.typesafe.akka.actor:2.4.4&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)&lt;span class=&quot;error&quot;&gt;&amp;#91;183:com.typesafe.akka.actor:2.4.4&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.Mailbox.run(Mailbox.scala:224)&lt;span class=&quot;error&quot;&gt;&amp;#91;183:com.typesafe.akka.actor:2.4.4&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at akka.dispatch.Mailbox.exec(Mailbox.scala:234)&lt;span class=&quot;error&quot;&gt;&amp;#91;183:com.typesafe.akka.actor:2.4.4&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;179: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;179: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;179: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;179:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8&amp;#93;&lt;/span&gt;&lt;/p&gt;



&lt;p&gt;Due to this issue, IT for VTN Manager on the master branch fails occasionally.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://jenkins.opendaylight.org/releng/view/vtn/job/vtn-verify-boron/138/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://jenkins.opendaylight.org/releng/view/vtn/job/vtn-verify-boron/138/&lt;/a&gt;&lt;br/&gt;
&lt;a href=&quot;https://jenkins.opendaylight.org/releng/view/vtn/job/vtn-verify-boron/129/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://jenkins.opendaylight.org/releng/view/vtn/job/vtn-verify-boron/129/&lt;/a&gt;&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="26072">CONTROLLER-1518</key>
            <summary>DataChangeListener is not notified of DS change occasionally</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="-1">Unassigned</assignee>
                                    <reporter username="Hideyuki1985">Hideyuki Tai</reporter>
                        <labels>
                    </labels>
                <created>Wed, 18 May 2016 23:00:26 +0000</created>
                <updated>Thu, 19 Oct 2017 21:25:25 +0000</updated>
                            <resolved>Wed, 15 Jun 2016 04:00:20 +0000</resolved>
                                    <version>0.4.0</version>
                                                    <component>clustering</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="51428" author="hideyuki.tai@necam.com" created="Wed, 18 May 2016 23:56:57 +0000"  >&lt;p&gt;We&apos;ve investigated this issue.&lt;br/&gt;
We are thinking that the root cause of this issue is in the &lt;b&gt;sal-distributed-datastore&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;When VTN project used &lt;b&gt;sal-inmemory-datastore&lt;/b&gt; as the backend of DS, VTN project has never faced this issue. However, after VTN project migrated it&apos;s IT into mdsal-it-base, the VTN IT uses the &lt;b&gt;sal-distributed-datastore&lt;/b&gt;, and the issue has showed up.&lt;/p&gt;


&lt;p&gt;What happened when the IllegalStateException occurred?&lt;br/&gt;
In the failure case, the publishChanges() of DefaultShardDataChangeListenerPublisher class was called from multiple threads at the same time.&lt;br/&gt;
Then, Stopwatch.start() was called even though the stopwatch was already started on a different thread for the same instance of Stopwatch class.&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DefaultShardDataChangeListenerPublisher.java&amp;#93;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;     33 final class DefaultShardDataChangeListenerPublisher implements ShardDataChangeListenerPublisher,&lt;br/&gt;
     34         NotificationManager&amp;lt;DataChangeListenerRegistration&amp;lt;?&amp;gt;, DOMImmutableDataChangeEvent&amp;gt; {&lt;br/&gt;
        (snip)&lt;/p&gt;

&lt;p&gt;     38     private final Stopwatch timer = Stopwatch.createUnstarted();&lt;/p&gt;

&lt;p&gt;        (snip)&lt;/p&gt;

&lt;p&gt;     57     @Override&lt;br/&gt;
     58     public void publishChanges(DataTreeCandidate candidate, String logContext) {&lt;br/&gt;
     59         timer.start();&lt;br/&gt;
     60&lt;br/&gt;
     61         try &lt;/p&gt;
{
     62             ResolveDataChangeEventsTask.create(candidate, dataChangeListenerTree).resolve(this);
     63         }
&lt;p&gt; finally {&lt;br/&gt;
     64             timer.stop();&lt;br/&gt;
     65             long elapsedTime = timer.elapsed(TimeUnit.MILLISECONDS);&lt;br/&gt;
     66             if(elapsedTime &amp;gt;= PUBLISH_DELAY_THRESHOLD_IN_MS) {&lt;br/&gt;
     67                 LOG.warn(&quot;{}: Generation of DataChange events took longer than expected. Elapsed time: {}&quot;,&lt;br/&gt;
     68                         logContext, timer);&lt;br/&gt;
     69             } else {&lt;br/&gt;
     70                 LOG.debug(&quot;{}: Elapsed time for generation of DataChange events: {}&quot;, logContext, timer);&lt;br/&gt;
     71             }&lt;br/&gt;
     72&lt;br/&gt;
     73             timer.reset();&lt;br/&gt;
     74         }&lt;br/&gt;
     75     }&lt;/p&gt;


&lt;p&gt;Here, we are talking about DefaultShardDataChangeListenerPublisher class so far.&lt;br/&gt;
However, we think the DefaultShardDataTreeChangeListenerPublisher has also the same issue.&lt;/p&gt;</comment>
                            <comment id="51429" author="hideyuki.tai@necam.com" created="Sun, 12 Jun 2016 05:17:36 +0000"  >&lt;p&gt;IT for VTN Manager on the master branch still failed on 06/11/2016 due to the &lt;a href=&quot;https://jira.opendaylight.org/browse/CONTROLLER-1518&quot; title=&quot;DataChangeListener is not notified of DS change occasionally&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CONTROLLER-1518&quot;&gt;&lt;del&gt;CONTROLLER-1518&lt;/del&gt;&lt;/a&gt;.&lt;br/&gt;
&lt;a href=&quot;https://jenkins.opendaylight.org/releng/job/vtn-integration-boron/896/org.opendaylight.vtn$manager.it.core/console&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://jenkins.opendaylight.org/releng/job/vtn-integration-boron/896/org.opendaylight.vtn$manager.it.core/console&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="51430" author="tpantelis" created="Tue, 14 Jun 2016 14:40:02 +0000"  >&lt;p&gt;Submitted &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/40306/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/40306/&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="51431" author="tpantelis" created="Wed, 15 Jun 2016 04:00:20 +0000"  >&lt;p&gt;Be patch: &lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/40324/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/40324/&lt;/a&gt;&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>5913</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=5913]]></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_10204" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>ODL SR Target Milestone</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10310"><![CDATA[Boron-M5]]></customfieldvalue>

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

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