[CONTROLLER-1769] Global RPC call error in cluster Created: 11/Sep/17  Updated: 25/Jul/23  Resolved: 19/Jul/18

Status: Resolved
Project: controller
Component/s: clustering
Affects Version/s: None
Fix Version/s: Oxygen

Type: Bug
Reporter: Geng Xingyuan Assignee: Unassigned
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Attachments: Text File karaf.log    
Issue Links:
Relates
relates to CONTROLLER-1788 Failed to execute RPC (urn:opendaylig... Resolved
External issue ID: 9135

 Description   

ODL cluster including node A and B
1. install feature odl-mdsal-clustering,odl-dluxapps-yangui and bundle org.opendaylight.controller.samples/sample-toaster/1.5.1-Carbon on node A,start this bundle
2. install feature odl-mdsal-all on Node B.
3. open web explorer and login in dlux on Node A
4. call rpc /operations/toaster:cancel-toast

you will see:
Error sending request - : No implementation of RPC AbsoluteSchemaPath

{path=[(http://netconfcentral.org/ns/toaster?revision=2009-11-19)cancel-toast]}

available on web explorer.

AND

2017-09-10 20:53:06,785 | ERROR | lt-dispatcher-42 | RpcInvoker | 197 - org.opendaylight.controller.sal-clustering-commons - 1.5.1.Carbon | Failed to execute RPC (http://netconfcentral.org/ns/toaster?revision=2009-11-19)cancel-toast due to org.opendaylight.controller.md.sal.dom.api.DOMRpcImplementationNotAvailableException: No implementation of RPC AbsoluteSchemaPath

{path=[(http://netconfcentral.org/ns/toaster?revision=2009-11-19)cancel-toast]}

available. More details are available on DEBUG level. on NodeB's karaf.log

Reason:
"revision=2009-11-19" is wrong.

In fact,in toaster.yang,defined as below:
revision "2009-11-20"

{ description "Toaster module in progress."; }

 Comments   
Comment by Geng Xingyuan [ 11/Sep/17 ]

https://git.opendaylight.org/gerrit/#/c/62945/

Comment by Tom Pantelis [ 11/Sep/17 ]

The problem is a serialization issue due to QName's representation of revision as a Date when the nodes are in different timezones.

Comment by Robert Varga [ 11/Sep/17 ]

As such, we need to fix this without impacting the QName serialization format in older releases – which is going to be interesting.

At any rate, YANGTOOLS-560 preliminarily set for Oxygen (due to its breaking nature) will solve this.

Comment by Robert Varga [ 11/Sep/17 ]

This may actually be a formatting problem, i.e. when we are converting Date to String representation.

External reference: https://coderanch.com/t/401533/java/Date-serialization-timezones

Hence this could, in theory, boil down to a simple patch to SimpleDateFormatUtil – except we'll need to also find any call sites which open-code the transformation.

Something along the lines of https://git.opendaylight.org/gerrit/62998.

Comment by Geng Xingyuan [ 12/Sep/17 ]

Sadly,this patch causes other problem.
Maybe omitted something.

I verified this patch as below:
1. compile the patch code and copy yang-common-1.1.1-Carbon.jar to distribution-karaf-0.6.1-Carbon/system/org/opendaylight/yangtools/yang-common/1.1.1-Carbon/
2. start bin/karaf
3. feature:install odl-mdsal-all

execute list command,we can see:
206 | Failure | 80 | 1.5.1.Carbon | org.opendaylight.controller.sal-cluster-admin-impl
207 | Active | 80 | 1.5.1.Carbon | sal-dom-xsql
208 | Active | 80 | 1.5.1.Carbon | Apache Karaf :: Shell odl/xsql Commands
209 | Active | 80 | 1.5.1.Carbon | sample-toaster
210 | GracePeriod | 80 | 1.5.1.Carbon | sample-toaster-consumer
211 | GracePeriod | 80 | 1.5.1.Carbon | sample-toaster-provider

Comment by Geng Xingyuan [ 12/Sep/17 ]

Attachment karaf.log has been added with description: karaf.log

Comment by Geng Xingyuan [ 12/Sep/17 ]

I've tested many times,the problem can be reproduced.

oscp@A23343146-4:~/distribution-karaf-0.6.1-Carbon/bin$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2ubuntu1.16.04.3-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

Comment by Geng Xingyuan [ 12/Sep/17 ]

Caused by: java.lang.ClassNotFoundException: org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.toaster.app.config.rev160502.ToasterAppConfig
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)[:1.8.0_131]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)[:1.8.0_131]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)[:1.8.0_131]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)[:1.8.0_131]
at org.eclipse.core.runtime.internal.adaptor.ContextFinder.loadClass(ContextFinder.java:131)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)[:1.8.0_131]
at org.opendaylight.yangtools.util.ClassLoaderUtils.loadClass0(ClassLoaderUtils.java:104)
at org.opendaylight.yangtools.util.ClassLoaderUtils.loadClass(ClassLoaderUtils.java:99)
at org.opendaylight.yangtools.util.ClassLoaderUtils.loadClassWithTCCL(ClassLoaderUtils.java:133)
at org.opendaylight.mdsal.binding.generator.impl.GeneratedClassLoadingStrategy$TCCLClassLoadingStrategy.loadClass(GeneratedClassLoadingStrategy.java:44)
at org.opendaylight.mdsal.binding.generator.impl.ModuleInfoBackedContext.loadClass(ModuleInfoBackedContext.java:77)
at org.opendaylight.mdsal.binding.generator.impl.GeneratedClassLoadingStrategy.loadClass(GeneratedClassLoadingStrategy.java:27)
at Proxyed8bd450_a5ef_413c_99ee_962dba66622e.loadClass(Unknown Source)
at org.opendaylight.mdsal.binding.generator.util.BindingRuntimeContext.getClassForSchema(BindingRuntimeContext.java:375)

module toaster-app-config {
yang-version 1;

......

revision "2016-05-03"

{ description "Initial revision."; }

container toaster-app-config

{ ...... }

}

Comment by Robert Varga [ 07/Nov/17 ]

YANGTOOLS-560 fixes this in Oxygen timeframe by eliminating use of Date.

Generated at Wed Feb 07 19:56:25 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.