[YANGTOOLS-215] Exception after try read augmentation Created: 16/Jul/14  Updated: 10/Apr/22  Resolved: 28/Jul/14

Status: Resolved
Project: yangtools
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug
Reporter: Robert Gallas Assignee: Tony Tkacik
Resolution: Won't Do Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: Windows
Platform: PC


External issue ID: 1375

 Description   

In previous code due to classloader issue I have to read augmented path prior to using augmentation. Code is proprietary. Log snapshot provided.

now trying to read augmented path thorws exception. Code to use to read:
InstanceIdentifier ii = InstanceIdentifier.builder(PATH).augmentation(ServiceInstance1.class).toInstance();
dataProviderService.readOperationalData(ii);

Exception:
java.lang.IllegalStateException: Unabled to construct augmentation identfier for InstanceIdentifier

{targetType=interface org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.service.XXXX.rev130318.ServiceInstance1, path=[org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.service.instance.rev140410.ServiceInstances, org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.service.instance.rev140410.service.instances.ServiceInstance, org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.service.XXXX.rev130318.ServiceInstance1]}
at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toNormalizedAugmented(BindingToNormalizedNodeCodec.java:304) ~[na:na]
at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toNormalized(BindingToNormalizedNodeCodec.java:78) ~[na:na]
at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedTransaction.doRead(AbstractForwardedTransaction.java:59) ~[na:na]
at org.opendaylight.controller.md.sal.binding.impl.ForwardedBackwardsCompatibleDataBroker$ForwardedBackwardsCompatibleTransacion.readOperationalData(ForwardedBackwardsCompatibleDataBroker.java:294) ~[na:na]
at org.opendaylight.controller.md.sal.binding.impl.ForwardedBackwardsCompatibleDataBroker$ForwardedBackwardsCompatibleTransacion.readOperationalData(ForwardedBackwardsCompatibleDataBroker.java:188) ~[na:na]
at org.opendaylight.controller.md.sal.binding.impl.ForwardedBackwardsCompatibleDataBroker.readOperationalData(ForwardedBackwardsCompatibleDataBroker.java:86) ~[na:na]
at org.opendaylight.controller.md.sal.binding.util.AbstractBindingSalConsumerInstance.readOperationalData(AbstractBindingSalConsumerInstance.java:98) ~[na:na]
at org.opendaylight.controller.XXXX.device.app.impl.handlers.ServiceXXXXListener.init(ServiceXXXXListener.java:35) ~[na:na]
at org.opendaylight.controller.XXXX.device.app.impl.XXXXDeviceAppImpl.onSessionInitiated(XXXXDeviceAppImpl.java:54) ~[na:na]
at org.opendaylight.controller.md.sal.binding.util.BindingContextUtils.createProviderContextAndInitialize(BindingContextUtils.java:57) ~[na:na]
at org.opendaylight.controller.sal.binding.impl.RootBindingAwareBroker.registerProvider(RootBindingAwareBroker.java:146) ~[na:na]
at org.opendaylight.controller.config.yang.XXXX.device.app.impl.XXXXDeviceAppImplModule.createInstance(XXXXDeviceAppImplModule.java:58) ~[na:na]
at org.opendaylight.controller.config.yang.XXXX.device.app.impl.AbstractXXXXDeviceAppImplModule.getInstance(AbstractXXXXDeviceAppImplModule.java:86) ~[na:na]
at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source) ~[na:na]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_25]
at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_25]
at org.opendaylight.controller.config.manager.impl.dependencyresolver.DependencyResolverManager$1.handleInvocation(DependencyResolverManager.java:152) ~[na:na]
at com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:70) ~[na:na]
at com.sun.proxy.$Proxy8.getInstance(Unknown Source) ~[na:na]
at org.opendaylight.controller.config.manager.impl.ConfigTransactionControllerImpl.secondPhaseCommit(ConfigTransactionControllerImpl.java:396) ~[na:na]
at org.opendaylight.controller.config.manager.impl.ConfigRegistryImpl.secondPhaseCommit(ConfigRegistryImpl.java:282) ~[na:na]
at org.opendaylight.controller.config.manager.impl.ConfigRegistryImpl.commitConfig(ConfigRegistryImpl.java:229) ~[na:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_25]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_25]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_25]
at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_25]
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:75) ~[na:1.7.0_25]
at sun.reflect.GeneratedMethodAccessor155.invoke(Unknown Source) ~[na:na]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_25]
at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_25]
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:279) ~[na:1.7.0_25]
at com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn(ConvertingMethod.java:193) ~[na:1.7.0_25]
at com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn(ConvertingMethod.java:175) ~[na:1.7.0_25]
at com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:117) ~[na:1.7.0_25]
at com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:54) ~[na:1.7.0_25]
at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237) ~[na:1.7.0_25]
at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138) ~[na:1.7.0_25]
at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252) ~[na:1.7.0_25]
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) ~[na:1.7.0_25]
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) ~[na:1.7.0_25]
at com.sun.jmx.mbeanserver.MXBeanProxy$InvokeHandler.invoke(MXBeanProxy.java:150) ~[na:1.7.0_25]
at com.sun.jmx.mbeanserver.MXBeanProxy.invoke(MXBeanProxy.java:167) ~[na:1.7.0_25]
at javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:252) ~[na:1.7.0_25]
at com.sun.proxy.$Proxy90.commitConfig(Unknown Source) ~[na:na]
at org.opendaylight.controller.config.util.ConfigRegistryJMXClient.commitConfig(ConfigRegistryJMXClient.java:102) ~[na:na]
at org.opendaylight.controller.netconf.confignetconfconnector.transactions.TransactionProvider.commitTransaction(TransactionProvider.java:110) ~[na:na]
at org.opendaylight.controller.netconf.confignetconfconnector.operations.Commit.handleWithNoSubsequentOperations(Commit.java:55) ~[na:na]
at org.opendaylight.controller.netconf.util.mapping.AbstractLastNetconfOperation.handle(AbstractLastNetconfOperation.java:33) ~[na:na]
at org.opendaylight.controller.netconf.util.mapping.AbstractNetconfOperation.handle(AbstractNetconfOperation.java:105) ~[na:na]
at org.opendaylight.controller.netconf.persist.impl.ConfigPusher.sendRequestGetResponseCheckIsOK(ConfigPusher.java:243) ~[na:na]
at org.opendaylight.controller.netconf.persist.impl.ConfigPusher.pushConfig(ConfigPusher.java:202) ~[na:na]
at org.opendaylight.controller.netconf.persist.impl.ConfigPusher.pushConfigWithConflictingVersionRetries(ConfigPusher.java:91) ~[na:na]
at org.opendaylight.controller.netconf.persist.impl.ConfigPusher.pushConfigs(ConfigPusher.java:68) ~[na:na]
at org.opendaylight.controller.netconf.persist.impl.osgi.ConfigPersisterActivator$InnerCustomizer$1.run(ConfigPersisterActivator.java:156) ~[na:na]
at java.lang.Thread.run(Thread.java:724) ~[na:1.7.0_25]
2014-07-16 10:54:23.357 CEST [config-pusher] ERROR o.o.c.c.m.impl.ConfigRegistryImpl - Configuration Transaction failed on 2PC, server is unhealthy
java.lang.IllegalStateException: Error - getInstance() failed for ModuleIdentifier{factoryName='XXXX-device-app-impl', instanceName='XXXX-device-app'} in transaction TransactionIdentifier{name='ConfigTransaction-39-41'}
at org.opendaylight.controller.config.manager.impl.ConfigTransactionControllerImpl.secondPhaseCommit(ConfigTransactionControllerImpl.java:402) ~[na:na]
at org.opendaylight.controller.config.manager.impl.ConfigRegistryImpl.secondPhaseCommit(ConfigRegistryImpl.java:282) ~[na:na]
at org.opendaylight.controller.config.manager.impl.ConfigRegistryImpl.commitConfig(ConfigRegistryImpl.java:229) ~[na:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_25]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_25]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_25]
at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_25]
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:75) ~[na:1.7.0_25]
at sun.reflect.GeneratedMethodAccessor155.invoke(Unknown Source) ~[na:na]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_25]
at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_25]
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:279) ~[na:1.7.0_25]
at com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn(ConvertingMethod.java:193) ~[na:1.7.0_25]
at com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn(ConvertingMethod.java:175) ~[na:1.7.0_25]
at com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:117) ~[na:1.7.0_25]
at com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:54) ~[na:1.7.0_25]
at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237) ~[na:1.7.0_25]
at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138) ~[na:1.7.0_25]
at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252) ~[na:1.7.0_25]
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) ~[na:1.7.0_25]
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) ~[na:1.7.0_25]
at com.sun.jmx.mbeanserver.MXBeanProxy$InvokeHandler.invoke(MXBeanProxy.java:150) ~[na:1.7.0_25]
at com.sun.jmx.mbeanserver.MXBeanProxy.invoke(MXBeanProxy.java:167) ~[na:1.7.0_25]
at javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:252) ~[na:1.7.0_25]
at com.sun.proxy.$Proxy90.commitConfig(Unknown Source) ~[na:na]
at org.opendaylight.controller.config.util.ConfigRegistryJMXClient.commitConfig(ConfigRegistryJMXClient.java:102) ~[na:na]
at org.opendaylight.controller.netconf.confignetconfconnector.transactions.TransactionProvider.commitTransaction(TransactionProvider.java:110) ~[na:na]
at org.opendaylight.controller.netconf.confignetconfconnector.operations.Commit.handleWithNoSubsequentOperations(Commit.java:55) ~[na:na]
at org.opendaylight.controller.netconf.util.mapping.AbstractLastNetconfOperation.handle(AbstractLastNetconfOperation.java:33) ~[na:na]
at org.opendaylight.controller.netconf.util.mapping.AbstractNetconfOperation.handle(AbstractNetconfOperation.java:105) ~[na:na]
at org.opendaylight.controller.netconf.persist.impl.ConfigPusher.sendRequestGetResponseCheckIsOK(ConfigPusher.java:243) ~[na:na]
at org.opendaylight.controller.netconf.persist.impl.ConfigPusher.pushConfig(ConfigPusher.java:202) ~[na:na]
at org.opendaylight.controller.netconf.persist.impl.ConfigPusher.pushConfigWithConflictingVersionRetries(ConfigPusher.java:91) ~[na:na]
at org.opendaylight.controller.netconf.persist.impl.ConfigPusher.pushConfigs(ConfigPusher.java:68) ~[na:na]
at org.opendaylight.controller.netconf.persist.impl.osgi.ConfigPersisterActivator$InnerCustomizer$1.run(ConfigPersisterActivator.java:156) ~[na:na]
at java.lang.Thread.run(Thread.java:724) ~[na:1.7.0_25]
Caused by: java.lang.IllegalStateException: Unabled to construct augmentation identfier for InstanceIdentifier{targetType=interface org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.service.XXXX.rev130318.ServiceInstance1, path=[org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.service.instance.rev140410.ServiceInstances, org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.service.instance.rev140410.service.instances.ServiceInstance, org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.service.XXXX.rev130318.ServiceInstance1]}

at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toNormalizedAugmented(BindingToNormalizedNodeCodec.java:304) ~[na:na]
at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toNormalized(BindingToNormalizedNodeCodec.java:78) ~[na:na]
at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedTransaction.doRead(AbstractForwardedTransaction.java:59) ~[na:na]
at org.opendaylight.controller.md.sal.binding.impl.ForwardedBackwardsCompatibleDataBroker$ForwardedBackwardsCompatibleTransacion.readOperationalData(ForwardedBackwardsCompatibleDataBroker.java:294) ~[na:na]
at org.opendaylight.controller.md.sal.binding.impl.ForwardedBackwardsCompatibleDataBroker$ForwardedBackwardsCompatibleTransacion.readOperationalData(ForwardedBackwardsCompatibleDataBroker.java:188) ~[na:na]
at org.opendaylight.controller.md.sal.binding.impl.ForwardedBackwardsCompatibleDataBroker.readOperationalData(ForwardedBackwardsCompatibleDataBroker.java:86) ~[na:na]
at org.opendaylight.controller.md.sal.binding.util.AbstractBindingSalConsumerInstance.readOperationalData(AbstractBindingSalConsumerInstance.java:98) ~[na:na]
at org.opendaylight.controller.XXXX.device.app.impl.handlers.ServiceXXXXListener.init(ServiceXXXXListener.java:35) ~[na:na]
at org.opendaylight.controller.XXXX.device.app.impl.XXXXDeviceAppImpl.onSessionInitiated(XXXXDeviceAppImpl.java:54) ~[na:na]
at org.opendaylight.controller.md.sal.binding.util.BindingContextUtils.createProviderContextAndInitialize(BindingContextUtils.java:57) ~[na:na]
at org.opendaylight.controller.sal.binding.impl.RootBindingAwareBroker.registerProvider(RootBindingAwareBroker.java:146) ~[na:na]
at org.opendaylight.controller.config.yang.XXXX.device.app.impl.XXXXDeviceAppImplModule.createInstance(XXXXDeviceAppImplModule.java:58) ~[na:na]
at org.opendaylight.controller.config.yang.XXXX.device.app.impl.AbstractXXXXDeviceAppImplModule.getInstance(AbstractXXXXDeviceAppImplModule.java:86) ~[na:na]
at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source) ~[na:na]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_25]
at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_25]
at org.opendaylight.controller.config.manager.impl.dependencyresolver.DependencyResolverManager$1.handleInvocation(DependencyResolverManager.java:152) ~[na:na]
at com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:70) ~[na:na]
at com.sun.proxy.$Proxy8.getInstance(Unknown Source) ~[na:na]
at org.opendaylight.controller.config.manager.impl.ConfigTransactionControllerImpl.secondPhaseCommit(ConfigTransactionControllerImpl.java:396) ~[na:na]
... 35 common frames omitted



 Comments   
Comment by Tony Tkacik [ 16/Jul/14 ]

Which version of YANGTools are you using for compilation of your models?

Comment by Tony Tkacik [ 21/Jul/14 ]

Is by any change your augmentation empty (does not contain any data nodes such
as leafs, containers, etc)?

Comment by Tony Tkacik [ 22/Jul/14 ]

Analysis showed that this exception is possible only if your augmentation
is empty, which makes it unusable with data broker
(since empty augmentations are impossible to detect from data).

Please remove offending line, since it is uncessary.

Comment by Robert Gallas [ 28/Jul/14 ]

Line removed. Works OK.

It was dummy read of empty augmentation as suggested approach to bypass classloader issues early in this year.

Generated at Wed Feb 07 20:52:35 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.