[YANGTOOLS-720] Yangtools throw excetion if two node definations with same name at yang defination top(same) level Created: 28/Nov/16  Updated: 10/Apr/22  Resolved: 28/Sep/17

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

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

Operating System: All
Platform: All


Issue Links:
Blocks
is blocked by YANGTOOLS-728 Yangtools allows same name in top-lev... Resolved
External issue ID: 7246

 Description   

yang file defination:

grouping sync-auto-planning-request

{ ...... }

rpc sync-auto-planning-request {
input

{ uses sync-auto-planning-request; }

}

Grouping's name is the same as rpc's name.

java excetion:
javax.servlet.ServletException: java.lang.IllegalArgumentException: Schema path must point to container or list or an rpc input/output. Supplied path AbsoluteSchemaPath

{path=[(urn:chinamobile:synchronization?revision=2016-03-17)sync-auto-planning-request, (urn:chinamobile:synchronization?revision=2016-03-17)output]}

pointed to: null
at org.apache.shiro.web.servlet.AdviceFilter.cleanup(AdviceFilter.java:196)[220:org.apache.shiro.web:1.2.5]
at org.apache.shiro.web.filter.authc.AuthenticatingFilter.cleanup(AuthenticatingFilter.java:155)[220:org.apache.shiro.web:1.2.5]
at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:148)[220:org.apache.shiro.web:1.2.5]
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)[220:org.apache.shiro.web:1.2.5]
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)[220:org.apache.shiro.web:1.2.5]
at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)[220:org.apache.shiro.web:1.2.5]
at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)[220:org.apache.shiro.web:1.2.5]
at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)[219:org.apache.shiro.core:1.2.5]
at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)[219:org.apache.shiro.core:1.2.5]
at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)[219:org.apache.shiro.core:1.2.5]
at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)[220:org.apache.shiro.web:1.2.5]
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)[220:org.apache.shiro.web:1.2.5]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1478)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:69)[192:org.ops4j.pax.web.pax-web-jetty:3.2.9]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:240)[192:org.ops4j.pax.web.pax-web-jetty:3.2.9]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:427)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:75)[192:org.ops4j.pax.web.pax-web-jetty:3.2.9]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.server.Server.handle(Server.java:370)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:984)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1045)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:236)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at java.lang.Thread.run(Thread.java:745)[:1.8.0_73]
Caused by: java.lang.IllegalArgumentException: Schema path must point to container or list or an rpc input/output. Supplied path AbsoluteSchemaPath

{path=[(urn:chinamobile:synchronization?revision=2016-03-17)sync-auto-planning-request, (urn:chinamobile:synchronization?revision=2016-03-17)output]}

pointed to: null
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:145)[41:com.google.guava:18.0.0]
at org.opendaylight.yangtools.yang.data.impl.codec.SchemaTracker.<init>(SchemaTracker.java:56)[57:org.opendaylight.yangtools.yang-data-impl:1.0.0.Boron]
at org.opendaylight.yangtools.yang.data.impl.codec.SchemaTracker.create(SchemaTracker.java:79)[57:org.opendaylight.yangtools.yang-data-impl:1.0.0.Boron]
at org.opendaylight.yangtools.yang.data.codec.gson.JSONNormalizedNodeStreamWriter.<init>(JSONNormalizedNodeStreamWriter.java:47)[61:org.opendaylight.yangtools.yang-data-codec-gson:1.0.0.Boron]
at org.opendaylight.yangtools.yang.data.codec.gson.JSONNormalizedNodeStreamWriter.createNestedWriter(JSONNormalizedNodeStreamWriter.java:89)[61:org.opendaylight.yangtools.yang-data-codec-gson:1.0.0.Boron]
at org.opendaylight.netconf.sal.rest.impl.NormalizedNodeJsonBodyWriter.createNormalizedNodeWriter(NormalizedNodeJsonBodyWriter.java:142)[243:org.opendaylight.netconf.sal-rest-connector:1.4.0.Boron]
at org.opendaylight.netconf.sal.rest.impl.NormalizedNodeJsonBodyWriter.writeNormalizedNode(NormalizedNodeJsonBodyWriter.java:103)[243:org.opendaylight.netconf.sal-rest-connector:1.4.0.Boron]
at org.opendaylight.netconf.sal.rest.impl.NormalizedNodeJsonBodyWriter.writeTo(NormalizedNodeJsonBodyWriter.java:81)[243:org.opendaylight.netconf.sal-rest-connector:1.4.0.Boron]
at org.opendaylight.netconf.sal.rest.impl.NormalizedNodeJsonBodyWriter.writeTo(NormalizedNodeJsonBodyWriter.java:48)[243:org.opendaylight.netconf.sal-rest-connector:1.4.0.Boron]
at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:306)[173:com.sun.jersey.jersey-server:1.17.0]
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1479)[173:com.sun.jersey.jersey-server:1.17.0]
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391)[173:com.sun.jersey.jersey-server:1.17.0]
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381)[173:com.sun.jersey.jersey-server:1.17.0]
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)[209:com.sun.jersey.servlet:1.17.0]
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)[209:com.sun.jersey.servlet:1.17.0]
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)[209:com.sun.jersey.servlet:1.17.0]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)[178:org.apache.geronimo.specs.geronimo-servlet_3.0_spec:1.0.0]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1507)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.servlets.CrossOriginFilter.handle(CrossOriginFilter.java:247)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.servlets.CrossOriginFilter.doFilter(CrossOriginFilter.java:210)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1478)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:82)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:256)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1478)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.opendaylight.aaa.filterchain.filters.CustomFilterAdapter.doFilter(CustomFilterAdapter.java:85)[225:org.opendaylight.aaa.filterchain:0.4.0.Boron]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1478)[183:org.eclipse.jetty.aggregate.jetty-all-server:8.1.19.v20160209]
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)[220:org.apache.shiro.web:1.2.5]
at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)[220:org.apache.shiro.web:1.2.5]
at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)[220:org.apache.shiro.web:1.2.5]
... 35 more



 Comments   
Comment by Peter Kajsa [ 28/Nov/16 ]

Hi,

it seems the real cause is missing output in your RPC definition. So I think this bug is duplicate of https://bugs.opendaylight.org/show_bug.cgi?id=6856.

Please try to add output to the RPC definition or try to retest using patch proposed here (https://bugs.opendaylight.org/show_bug.cgi?id=6856) and let us know the result.

Thanks.

Comment by Geng Xingyuan [ 28/Nov/16 ]

This problem caused by

grouping sync-auto-planning-request

and

rpc sync-auto-planning-request

with the same name!!

Comment by Peter Kajsa [ 30/Nov/16 ]

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

Comment by Robert Varga [ 10/Jan/17 ]

The fix needs to take a different approach, requiring a change to JSONNormalizedNodeStreamWriter instantiation: create

{Nested,Exclusive}

Writer() methods should not be taking a SchemaPath, but rather a root SchemaNode at which the writer is starting.

Internal lookups within the codec (SchemaTracker really) should only consider instantiated data nodes when looking up children.

This will lead to RESTCONF performing the correct schema lookup based on the operation being done (invoke or write) and the codec encoding the data as expected, never being in an ambiguous situation.

Comment by Robert Varga [ 27/Jan/17 ]

Putting this one back into backlog.

Comment by Robert Varga [ 30/Jan/17 ]

master: https://git.opendaylight.org/gerrit/51169

Comment by Robert Varga [ 30/Jan/17 ]

This may also be fixed by BUG-7424.

Comment by Peter Kajsa [ 16/Mar/17 ]

YANGTOOLS-728 has been resolved, so some name conflicts should be resolved. However, identifiers of groupings and rpcs belong to different namespaces, so I think that YANGTOOLS-728 does not resolve this case when grouping's name is the same as rpc's name, because it is valid yang model.

@Geng Xingyuan, @Robert
Do you have any patches or work in progress ?

Comment by Robert Varga [ 16/Mar/17 ]

https://git.opendaylight.org/gerrit/#/c/51169/ for yangtools, which allows the root to be specified and would allow restconf to side-step the conflict between data/RPCs – which 7424 already took care of, hence I will abandon it again.

https://git.opendaylight.org/gerrit/#/c/48836/ is an alternative approach, where SchemaUtils just goes after data nodes, which fixes the conflict between data and groupings (if I remember correctly).

Essentially we need a method which traverses RFC6020 section 6.2.1 namespace of 'All leafs, leaf-lists...' only and call that from schematracker.

Comment by Peter Kajsa [ 24/Aug/17 ]

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

Comment by Robert Varga [ 01/Sep/17 ]

carbon: https://git.opendaylight.org/gerrit/62540
nitrogen: https://git.opendaylight.org/gerrit/62541

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