<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 19:54:03 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-858] Clustering: Update Cluster datastore to provide notification/API to check its availability for clients</title>
                <link>https://jira.opendaylight.org/browse/CONTROLLER-858</link>
                <project id="10113" key="CONTROLLER">controller</project>
                    <description>&lt;p&gt;When attempting to install via karaf odl-mdsal-all, one gets the following errors.&lt;/p&gt;

&lt;p&gt;Steps to reproduce:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Download latest integration branch&lt;/li&gt;
	&lt;li&gt;maven clean install&lt;/li&gt;
	&lt;li&gt;karaf + install:feature odl-mdsal-all&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;opendaylight-user@root&amp;gt;Exception in thread &quot;config-pusher&quot; java.lang.IllegalStateException: Failed to send commit for configuration 04-xsql.xml(odl-mdsal-all,odl-mdsal-xsql)&lt;br/&gt;
        at org.opendaylight.controller.netconf.persist.impl.ConfigPusherImpl.sendRequestGetResponseCheckIsOK(ConfigPusherImpl.java:292)&lt;br/&gt;
        at org.opendaylight.controller.netconf.persist.impl.ConfigPusherImpl.pushConfig(ConfigPusherImpl.java:246)&lt;br/&gt;
        at org.opendaylight.controller.netconf.persist.impl.ConfigPusherImpl.pushConfigWithConflictingVersionRetries(ConfigPusherImpl.java:135)&lt;br/&gt;
        at org.opendaylight.controller.netconf.persist.impl.ConfigPusherImpl.internalPushConfigs(ConfigPusherImpl.java:111)&lt;br/&gt;
        at org.opendaylight.controller.netconf.persist.impl.ConfigPusherImpl.process(ConfigPusherImpl.java:78)&lt;br/&gt;
        at org.opendaylight.controller.netconf.persist.impl.osgi.ConfigPersisterActivator$InnerCustomizer$1.run(ConfigPersisterActivator.java:178)&lt;br/&gt;
        at java.lang.Thread.run(Thread.java:744)&lt;br/&gt;
Caused by: java.lang.IllegalStateException: Error - getInstance() failed for ModuleIdentifier&lt;/p&gt;
{factoryName=&apos;XSQL&apos;, instanceName=&apos;XSQL&apos;}
&lt;p&gt; in transaction TransactionIdentifier&lt;/p&gt;
{name=&apos;ConfigTransaction-50-52&apos;}
&lt;p&gt;        at org.opendaylight.controller.config.manager.impl.ConfigTransactionControllerImpl.secondPhaseCommit(ConfigTransactionControllerImpl.java:402)&lt;br/&gt;
        at org.opendaylight.controller.config.manager.impl.ConfigRegistryImpl.secondPhaseCommit(ConfigRegistryImpl.java:282)&lt;br/&gt;
        at org.opendaylight.controller.config.manager.impl.ConfigRegistryImpl.commitConfig(ConfigRegistryImpl.java:229)&lt;br/&gt;
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&lt;br/&gt;
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)&lt;br/&gt;
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)&lt;br/&gt;
        at java.lang.reflect.Method.invoke(Method.java:606)&lt;br/&gt;
        at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:75)&lt;br/&gt;
        at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source)&lt;br/&gt;
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)&lt;br/&gt;
        at java.lang.reflect.Method.invoke(Method.java:606)&lt;br/&gt;
        at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:279)&lt;br/&gt;
        at com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn(ConvertingMethod.java:193)&lt;br/&gt;
        at com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn(ConvertingMethod.java:175)&lt;br/&gt;
        at com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:117)&lt;br/&gt;
        at com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:54)&lt;br/&gt;
        at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237)&lt;br/&gt;
        at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138)&lt;br/&gt;
        at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252)&lt;br/&gt;
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)&lt;br/&gt;
        at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)&lt;br/&gt;
        at com.sun.jmx.mbeanserver.MXBeanProxy$InvokeHandler.invoke(MXBeanProxy.java:150)&lt;br/&gt;
        at com.sun.jmx.mbeanserver.MXBeanProxy.invoke(MXBeanProxy.java:167)&lt;br/&gt;
        at javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:252)&lt;br/&gt;
        at com.sun.proxy.$Proxy31.commitConfig(Unknown Source)&lt;br/&gt;
        at org.opendaylight.controller.config.util.ConfigRegistryJMXClient.commitConfig(ConfigRegistryJMXClient.java:102)&lt;br/&gt;
        at org.opendaylight.controller.netconf.confignetconfconnector.transactions.TransactionProvider.commitTransaction(TransactionProvider.java:110)&lt;br/&gt;
        at org.opendaylight.controller.netconf.confignetconfconnector.operations.Commit.handleWithNoSubsequentOperations(Commit.java:55)&lt;br/&gt;
        at org.opendaylight.controller.netconf.util.mapping.AbstractLastNetconfOperation.handle(AbstractLastNetconfOperation.java:33)&lt;br/&gt;
        at org.opendaylight.controller.netconf.util.mapping.AbstractNetconfOperation.handle(AbstractNetconfOperation.java:105)&lt;br/&gt;
        at org.opendaylight.controller.netconf.persist.impl.ConfigPusherImpl.sendRequestGetResponseCheckIsOK(ConfigPusherImpl.java:287)&lt;br/&gt;
        ... 6 more&lt;br/&gt;
Caused by: java.lang.IllegalStateException: Failed to read pre-existing data&lt;br/&gt;
        at org.opendaylight.controller.md.sal.binding.impl.AbstractReadWriteTransaction.ensureParentsByMerge(AbstractReadWriteTransaction.java:55)&lt;br/&gt;
        at org.opendaylight.controller.md.sal.binding.impl.AbstractWriteTransaction.put(AbstractWriteTransaction.java:44)&lt;br/&gt;
        at org.opendaylight.controller.md.sal.binding.impl.ForwardedBackwardsCompatibleDataBroker$ForwardedBackwardsCompatibleTransacion.putOperationalData(ForwardedBackwardsCompatibleDataBroker.java:218)&lt;br/&gt;
        at org.opendaylight.controller.md.sal.binding.impl.ForwardedBackwardsCompatibleDataBroker$ForwardedBackwardsCompatibleTransacion.putOperationalData(ForwardedBackwardsCompatibleDataBroker.java:186)&lt;br/&gt;
        at org.opendaylight.xsql.XSQLProvider.buildXSQL(XSQLProvider.java:31)&lt;br/&gt;
        at org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.xsql.rev140626.XSQLModule.createInstance(XSQLModule.java:26)&lt;br/&gt;
        at org.opendaylight.yang.gen.v1.http.netconfcentral.org.ns.xsql.rev140626.AbstractXSQLModule.getInstance(AbstractXSQLModule.java:95)&lt;br/&gt;
        at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)&lt;br/&gt;
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)&lt;br/&gt;
        at java.lang.reflect.Method.invoke(Method.java:606)&lt;br/&gt;
        at org.opendaylight.controller.config.manager.impl.dependencyresolver.DependencyResolverManager$1.handleInvocation(DependencyResolverManager.java:152)&lt;br/&gt;
        at com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:70)&lt;br/&gt;
        at com.sun.proxy.$Proxy70.getInstance(Unknown Source)&lt;br/&gt;
        at org.opendaylight.controller.config.manager.impl.ConfigTransactionControllerImpl.secondPhaseCommit(ConfigTransactionControllerImpl.java:396)&lt;br/&gt;
        ... 36 more&lt;br/&gt;
Caused by: ReadFailedException&lt;/p&gt;
{message=Error checking exists for path /(http://netconfcentral.org/ns/XSQL?revision=2014-06-26)XSQL, errorList=[RpcError [message=Error checking exists for path /(http://netconfcentral.org/ns/XSQL?revision=2014-06-26)XSQL, severity=ERROR, errorType=APPLICATION, tag=operation-failed, applicationTag=null, info=null, cause=org.opendaylight.controller.cluster.datastore.exceptions.TimeoutException: Sending message class org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages$CreateTransaction to actor ActorSelection[Anchor(akka://opendaylight-cluster-data/), Path(/user/shardmanager-operational/member-1-shard-default-operational)] failed]]}
&lt;p&gt;        at org.opendaylight.controller.cluster.datastore.TransactionProxy$NoOpTransactionContext.dataExists(TransactionProxy.java:846)&lt;br/&gt;
        at org.opendaylight.controller.cluster.datastore.TransactionProxy.exists(TransactionProxy.java:258)&lt;br/&gt;
        at org.opendaylight.controller.md.sal.dom.broker.impl.DOMForwardedReadWriteTransaction.exists(DOMForwardedReadWriteTransaction.java:54)&lt;br/&gt;
        at org.opendaylight.controller.md.sal.binding.impl.AbstractReadWriteTransaction.ensureParentsByMerge(AbstractReadWriteTransaction.java:52)&lt;br/&gt;
        ... 49 more&lt;br/&gt;
Caused by: org.opendaylight.controller.cluster.datastore.exceptions.TimeoutException: Sending message class org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages$CreateTransaction to actor ActorSelection&lt;span class=&quot;error&quot;&gt;&amp;#91;Anchor(akka://opendaylight-cluster-data/), Path(/user/shardmanager-operational/member-1-shard-default-operational)&amp;#93;&lt;/span&gt; failed&lt;br/&gt;
        at org.opendaylight.controller.cluster.datastore.utils.ActorContext.executeRemoteOperation(ActorContext.java:189)&lt;br/&gt;
        at org.opendaylight.controller.cluster.datastore.utils.ActorContext.executeShardOperation(ActorContext.java:243)&lt;br/&gt;
        at org.opendaylight.controller.cluster.datastore.TransactionProxy.createTransactionIfMissing(TransactionProxy.java:382)&lt;br/&gt;
        at org.opendaylight.controller.cluster.datastore.TransactionProxy.exists(TransactionProxy.java:256)&lt;br/&gt;
        ... 51 more&lt;br/&gt;
Caused by: java.lang.IllegalStateException: Could not find leader so transaction cannot be created&lt;br/&gt;
        at org.opendaylight.controller.cluster.datastore.Shard.onReceiveCommand(Shard.java:221)&lt;br/&gt;
        at akka.persistence.UntypedPersistentActor.onReceive(Eventsourced.scala:430)&lt;br/&gt;
        at org.opendaylight.controller.cluster.common.actor.MeteringBehavior.apply(MeteringBehavior.java:80)&lt;br/&gt;
        at akka.actor.ActorCell$$anonfun$become$1.applyOrElse(ActorCell.scala:534)&lt;br/&gt;
        at akka.persistence.Recovery$State$class.process(Recovery.scala:30)&lt;br/&gt;
        at akka.persistence.ProcessorImpl$$anon$2.process(Processor.scala:103)&lt;br/&gt;
        at akka.persistence.ProcessorImpl$$anon$2.aroundReceive(Processor.scala:114)&lt;br/&gt;
        at akka.persistence.Recovery$class.aroundReceive(Recovery.scala:256)&lt;br/&gt;
        at akka.persistence.UntypedPersistentActor.akka$persistence$Eventsourced$$super$aroundReceive(Eventsourced.scala:428)&lt;br/&gt;
        at akka.persistence.Eventsourced$$anon$2.doAroundReceive(Eventsourced.scala:82)&lt;br/&gt;
        at akka.persistence.Eventsourced$$anon$2.aroundReceive(Eventsourced.scala:78)&lt;br/&gt;
        at akka.persistence.Eventsourced$class.aroundReceive(Eventsourced.scala:369)&lt;br/&gt;
        at akka.persistence.UntypedPersistentActor.aroundReceive(Eventsourced.scala:428)&lt;br/&gt;
        at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)&lt;br/&gt;
        at akka.actor.ActorCell.invoke(ActorCell.scala:487)&lt;br/&gt;
        at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)&lt;br/&gt;
        at akka.dispatch.Mailbox.run(Mailbox.scala:220)&lt;br/&gt;
        at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)&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;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="25412">CONTROLLER-858</key>
            <summary>Clustering: Update Cluster datastore to provide notification/API to check its availability for clients</summary>
                <type id="10100" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10310&amp;avatarType=issuetype">Improvement</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="10001">Won&apos;t Do</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="wojdec">Wojciech Dec</reporter>
                        <labels>
                    </labels>
                <created>Thu, 18 Sep 2014 13:08:13 +0000</created>
                <updated>Thu, 19 Oct 2017 21:27:05 +0000</updated>
                            <resolved>Wed, 5 Jul 2017 13:09:08 +0000</resolved>
                                    <version>Helium</version>
                                                    <component>clustering</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>10</watches>
                                                                                                                <comments>
                            <comment id="49253" author="harmasin@cisco.com" created="Thu, 18 Sep 2014 20:32:06 +0000"  >&lt;p&gt;This issues happens because Xsql bundle tries to use datastore, While clustering shards are getting ready and they are not available for use. &lt;/p&gt;

&lt;p&gt;This is not clustering issue, should be fixed at each application level.&lt;/p&gt;</comment>
                            <comment id="49254" author="harmasin@cisco.com" created="Thu, 18 Sep 2014 20:34:33 +0000"  >&lt;p&gt;Ideally, each application, if performing some datastore related operations, should check, if datastore is available or perform that operation in callback manner, once its available.&lt;/p&gt;</comment>
                            <comment id="49255" author="saichler@cisco.com" created="Thu, 18 Sep 2014 22:22:48 +0000"  >&lt;p&gt;The fix implementation should be done &quot;underneath&quot; the Data Broker interface so ALL the applications should not be concerned with this race condition issue. If the fix will be done in XSQL, the race condition will just move to the next loading application and thus, the bug won&apos;t be fixed, just shift to another application.&lt;/p&gt;</comment>
                            <comment id="49256" author="harmasin@cisco.com" created="Mon, 22 Sep 2014 20:21:08 +0000"  >&lt;p&gt;The issue that we see can happen with any client application that is trying to use cluster data store, we should provide some notification of status of datastore that applications can listen to.&lt;/p&gt;</comment>
                            <comment id="49257" author="tony.tkacik@gmail.com" created="Thu, 16 Oct 2014 08:40:05 +0000"  >&lt;p&gt;Clustered data store should not provide its instance to clients when is not ready, since client gets &quot;not fully working&quot; implementation. Better solution is to wait in create instance till clustering is initialized and then return.&lt;/p&gt;</comment>
                            <comment id="49258" author="moraja@cisco.com" created="Tue, 6 Jan 2015 16:50:44 +0000"  >&lt;p&gt;Consensus&lt;/p&gt;

&lt;p&gt;1. Datastore should notify when it is not available&lt;br/&gt;
2. An external listener should shutdown the controller&lt;br/&gt;
3. Some external program should restart the controller (eg monit)&lt;/p&gt;</comment>
                            <comment id="49259" author="moraja@cisco.com" created="Tue, 18 Aug 2015 15:38:19 +0000"  >&lt;p&gt;There are a few things that were done to help with this,&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;The datastore remains unavailable till the leaders for all shards are available. We wait for 90 seconds and then give up&lt;/li&gt;
	&lt;li&gt;We retry transactions&lt;/li&gt;
	&lt;li&gt;We throw an DataStoreUnavailableException when elections are going on&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;There is no clear use case for a notification to be issued when datastore is unavailable.&lt;/p&gt;

&lt;p&gt;We may want to create a service which given a yanginstanceid can inform us of the availability of the underlying shard.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                                                <inwardlinks description="is blocked by">
                                        <issuelink>
            <issuekey id="26037">CONTROLLER-1483</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </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>1955</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=1955]]></customfieldvalue>

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

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10204" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>ODL SR Target Milestone</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10349"><![CDATA[Unspecified]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10202" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Priority</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10301"><![CDATA[Normal]]></customfieldvalue>

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

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