[CONTROLLER-1058] IdentityValuesDTO cannot be cast to java.lang.String Created: 03/Dec/14  Updated: 25/Jul/23  Resolved: 03/Mar/15

Status: Verified
Project: controller
Component/s: restconf
Affects Version/s: None
Fix Version/s: None

Type: Bug
Reporter: Jozef Gloncak 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: File karaf_20141202.log.xz     File trace_20141203.log.xz    
External issue ID: 2468

 Description   

while executing this curl
curl -X POST H "Content-Type:application/json" -d '{"input":{"node":"pcc://39.39.39.39","name":"3_0101","network-topology-ref":"/network-topology:network-topology/network-topology:topology[network-topology:topology-id=\"pcep-topology\"]","arguments":{"lsp":

{"delegate":true,"administrative":true}

,"endpoints-obj":{"ipv4":{"source-ipv4-address":"39.39.39.39","destination-ipv4-address":"43.43.43.43"}},"ero":{"subobject":[{"loose":false,"ip-prefix":{"ip-prefix":"195.20.160.40/32"}},{"loose":false,"ip-prefix":{"ip-prefix":"201.20.160.43/32"}},{"loose":false,"ip-prefix":{"ip-prefix":"43.43.43.43/32"}}]}}}}' 127.0.0.1:8181/restconf/operations/network-topology-pcep:add-lsp

following exception was returned
java.lang.ClassCastException: org.opendaylight.controller.sal.restconf.impl.IdentityValuesDTO cannot be cast to java.lang.String\n\tat org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId$Broker$Codec$DOM.fromDomValue(NodeId$Broker$Codec$DOM.java)\n\tat org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.AddLspInput$Broker$Codec$DOM.fromDomStatic(AddLspInput$Broker$Codec$DOM.java)\n\tat org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.AddLspInput$Broker$Codec$DOM.deserialize(AddLspInput$Broker$Codec$DOM.java)\n\tat org.opendaylight.yangtools.sal.binding.generator.impl.LazyGeneratedCodecRegistry$DataContainerCodecImpl.deserialize(LazyGeneratedCodecRegistry.java:573)\n\tat org.opendaylight.yangtools.sal.binding.generator.impl.RuntimeGeneratedMappingServiceImpl.dataObjectFromDataDom(RuntimeGeneratedMappingServiceImpl.java:289)\n\tat org.opendaylight.yangtools.sal.binding.generator.impl.RuntimeGeneratedMappingServiceImpl.dataObjectFromDataDom(RuntimeGeneratedMappingServiceImpl.java:388)\n\tat org.opendaylight.controller.sal.binding.impl.connect.dom.RpcInvocationStrategy.uncheckedInvoke(RpcInvocationStrategy.java:129)\n\tat org.opendaylight.controller.sal.binding.impl.connect.dom.RpcInvocationStrategy.invokeOn(RpcInvocationStrategy.java:152)\n\tat org.opendaylight.controller.sal.binding.impl.connect.dom.DomToBindingRpcForwarder.invokeRpc(DomToBindingRpcForwarder.java:228)\n\tat org.opendaylight.controller.sal.dom.broker.impl.RoutedRpcSelector.invokeRpc(RoutedRpcSelector.java:84)\n\tat org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareRpcBroker.invokeRpc(SchemaAwareRpcBroker.java:179)\n\tat org.opendaylight.controller.sal.dom.broker.BrokerImpl.invokeRpcAsync(BrokerImpl.java:76)\n\tat org.opendaylight.controller.sal.dom.broker.ConsumerContextImpl.rpc(ConsumerContextImpl.java:48)\n\tat org.opendaylight.controller.sal.restconf.impl.BrokerFacade.invokeRpc(BrokerFacade.java:159)\n\tat org.opendaylight.controller.sal.restconf.rpc.impl.BrokerRpcExecutor.invokeRpcUnchecked(BrokerRpcExecutor.java:26)\n\tat org.opendaylight.controller.sal.restconf.rpc.impl.AbstractRpcExecutor.invokeRpc(AbstractRpcExecutor.java:35)\n\tat org.opendaylight.controller.sal.restconf.impl.RestconfImpl.callRpc(RestconfImpl.java:614)\n\tat org.opendaylight.controller.sal.restconf.impl.RestconfImpl.invokeRpc(RestconfImpl.java:460)\n\tat org.opendaylight.controller.sal.restconf.impl.StatisticsRestconfServiceWrapper.invokeRpc(StatisticsRestconfServiceWrapper.java:72)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)\n\tat java.lang.reflect.Method.invoke(Unknown Source)\n\tat com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)\n\tat com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)\n\tat com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)\n\tat com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)\n\tat com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)\n\tat com.sun.jersey.server.impl.uri.rules.ResourceObjectRule.accept(ResourceObjectRule.java:100)\n\tat com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)\n\tat com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)\n\tat com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1511)\n\tat com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1442)\n\tat com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391)\n\tat com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381)\n\tat com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)\n\tat com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)\n\tat com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:668)\n\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1496)\n\tat org.eclipse.jetty.servlets.CrossOriginFilter.handle(CrossOriginFilter.java:247)\n\tat org.eclipse.jetty.servlets.CrossOriginFilter.doFilter(CrossOriginFilter.java:210)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)\n\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)\n\tat org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:69)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)\n\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)\n\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)\n\tat org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:240)\n\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)\n\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)\n\tat org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:77)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:370)\n\tat org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)\n\tat org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:982)\n\tat org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1043)\n\tat org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)\n\tat org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)\n\tat org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)\n\tat org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)\n\tat org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)\n\tat java.lang.Thread.run(Unknown Source)\n"



 Comments   
Comment by Jozef Gloncak [ 03/Dec/14 ]

Attachment karaf_20141202.log.xz has been added with description: logfile

Comment by Jozef Gloncak [ 03/Dec/14 ]

It looks like translation from IdentityValuesDTO to YangInstanceIdentifier wasn't successful in method RestconfImpl.normalizeSimpleNode() (if deserialization returns null then original value - IdentityValuesDTO instance - is returned.)

I checked deserialization() method for InstanceIdentifier. If null value is returned then also log entry "Instance-identifier will be translated as NULL for data..." at INFO level is logged.

I searched for this log message in provided logfile but nothing was found (log file in attachment).

It is also possible to get null as return value without log entry if IdentityValueDTO contains no data. I suppose that this isn't this case because there should be following data (from input CURL):
"network-topology-ref":"/network-topology:network-topology/network-topology:topology[network-topology:topology-id=\"pcep-topology\"]"
REMARK: network-topology-ref is of type instance-identifier

It was also reported that this problem wasn't present on
19november 5:18 AM : http://sn-bldsg.cisco.com/jenkins/job/test_snapshot_bgpcep07/277/
and appeared on
19november 5:36 AM http://sn-bldsg.cisco.com/jenkins/job/test_snapshot_bgpcep07/278/

There is only one commit which was merged at this time and relates with sal-rest-connector - https://git.opendaylight.org/gerrit/#/c/12524/11 - but it doesn't change anything related with instance-identifier.

Comment by Vratko Polak [ 03/Dec/14 ]

The curl command in the description is missing dash between "POST " and "H ".

Attached log from recent build of master branch, mostly INFO but at critical point TRACE.

To my eye, this looks as first suspicious message:

2014-12-03 15:57:12,481 | DEBUG | ogy-pcep:add-lsp | SchemaContextUtil

102 - org.opendaylight.yangtools.yang-model-util - 0.7.0.SNAPSHOT No node matc
hing [(urn:opendaylight:params:xml:ns:yang:topology:pcep?revision=2013-10-24)network
-topology, (urn:opendaylight:params:xml:ns:yang:topology:pcep?revision=2013-10-24)to
pology, (urn:opendaylight:params:xml:ns:yang:topology:pcep?revision=2013-10-24)node,
(urn:opendaylight:params:xml:ns:yang:topology:pcep?revision=2013-10-24)node-id] fou
nd in node ModuleImpl[name=network-topology-pcep, namespace=urn:opendaylight:params:
xml:ns:yang:topology:pcep, revision=Thu Oct 24 00:00:00 UTC 2013, prefix=pn, yangVer
sion=1]

and then this sequence looks to be the main symptom:

2014-12-03 15:57:12,953 | DEBUG | ogy-pcep:add-lsp | InstanceIdentifierCodecImpl | 114 - org.opendaylight.yangtools.binding-generator-impl - 0.7.0.SNAPSHOT | DOM Instance Identifier /(urn:TBD:params:xml:ns:yang:network-topology?revision=2013-10-21)network-topology/topology[

{(urn:TBD:params:xml:ns:yang:network-topology?revision=2013-10-21)topology-id=pcep-topology}

] deserialized to KeyedInstanceIdentifier

{targetType=interface org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology, path=[org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology, org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology[key=TopologyKey [_topologyId=Uri [_value=pcep-topology]]]]}

2014-12-03 15:57:12,954 | WARN | ogy-pcep:add-lsp | ntimeGeneratedMappingServiceImpl | 114 - org.opendaylight.yangtools.binding-generator-impl - 0.7.0.SNAPSHOT | Failed to deserialize path InstanceIdentifier

{targetType=interface org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.AddLspInput, path=[org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.AddLspInput]}

data Node[MutableCompositeNodeTOImpl], qName[input], modify[n/a], children.size = 4

Comment by Vratko Polak [ 03/Dec/14 ]

Attachment trace_20141203.log.xz has been added with description: compressed karaf.log

Comment by Jozef Gloncak [ 16/Dec/14 ]

This two patches should solve this issue
yangtools - https://git.opendaylight.org/gerrit/13683
controller - https://git.opendaylight.org/gerrit/13684

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