<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 19:12:39 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>[BGPCEP-305] Bgp linkstate fails in the isis persudondoe case&#12290;There comes a NullPointerException</title>
                <link>https://jira.opendaylight.org/browse/BGPCEP-305</link>
                <project id="10108" key="BGPCEP">bgpcep</project>
                    <description>&lt;p&gt;2015-10-29 18:54:38,110 | WARN  | oupCloseable-3-1 | DefaultChannelPipeline           | 110 - io.netty.common - 4.0.26.Final | An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.&lt;br/&gt;
java.lang.NullPointerException&lt;br/&gt;
	at org.opendaylight.protocol.bgp.linkstate.nlri.NodeNlriParser.serializeRouterId(NodeNlriParser.java:203)&lt;span class=&quot;error&quot;&gt;&amp;#91;288:org.opendaylight.bgpcep.bgp-linkstate:0.4.2.Lithium-SR2&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.protocol.bgp.linkstate.nlri.NodeNlriParser.serializeNodeDescriptors(NodeNlriParser.java:192)&lt;span class=&quot;error&quot;&gt;&amp;#91;288:org.opendaylight.bgpcep.bgp-linkstate:0.4.2.Lithium-SR2&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.protocol.bgp.linkstate.nlri.LinkstateNlriParser.serializeNlri(LinkstateNlriParser.java:258)&lt;span class=&quot;error&quot;&gt;&amp;#91;288:org.opendaylight.bgpcep.bgp-linkstate:0.4.2.Lithium-SR2&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.protocol.bgp.linkstate.LinkstateRIBSupport.createRouteKey(LinkstateRIBSupport.java:164)&lt;span class=&quot;error&quot;&gt;&amp;#91;288:org.opendaylight.bgpcep.bgp-linkstate:0.4.2.Lithium-SR2&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.protocol.bgp.linkstate.LinkstateRIBSupport.processDestination(LinkstateRIBSupport.java:145)&lt;span class=&quot;error&quot;&gt;&amp;#91;288:org.opendaylight.bgpcep.bgp-linkstate:0.4.2.Lithium-SR2&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.protocol.bgp.linkstate.LinkstateRIBSupport.putDestinationRoutes(LinkstateRIBSupport.java:158)&lt;span class=&quot;error&quot;&gt;&amp;#91;288:org.opendaylight.bgpcep.bgp-linkstate:0.4.2.Lithium-SR2&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.protocol.bgp.rib.spi.AbstractRIBSupport.putRoutes(AbstractRIBSupport.java:219)&lt;span class=&quot;error&quot;&gt;&amp;#91;283:org.opendaylight.bgpcep.bgp-rib-spi:0.4.2.Lithium-SR2&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.protocol.bgp.rib.impl.RIBSupportContextImpl.writeRoutes(RIBSupportContextImpl.java:137)&lt;span class=&quot;error&quot;&gt;&amp;#91;289:org.opendaylight.bgpcep.bgp-rib-impl:0.4.2.Lithium-SR2&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.protocol.bgp.rib.impl.TableContext.writeRoutes(TableContext.java:49)&lt;span class=&quot;error&quot;&gt;&amp;#91;289:org.opendaylight.bgpcep.bgp-rib-impl:0.4.2.Lithium-SR2&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.protocol.bgp.rib.impl.AdjRibInWriter.updateRoutes(AdjRibInWriter.java:237)&lt;span class=&quot;error&quot;&gt;&amp;#91;289:org.opendaylight.bgpcep.bgp-rib-impl:0.4.2.Lithium-SR2&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.protocol.bgp.rib.impl.BGPPeer.onMessage(BGPPeer.java:123)&lt;span class=&quot;error&quot;&gt;&amp;#91;289:org.opendaylight.bgpcep.bgp-rib-impl:0.4.2.Lithium-SR2&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.protocol.bgp.rib.impl.BGPPeer.onMessage(BGPPeer.java:67)&lt;span class=&quot;error&quot;&gt;&amp;#91;289:org.opendaylight.bgpcep.bgp-rib-impl:0.4.2.Lithium-SR2&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.protocol.bgp.rib.impl.BGPSessionImpl.handleMessage(BGPSessionImpl.java:217)&lt;span class=&quot;error&quot;&gt;&amp;#91;289:org.opendaylight.bgpcep.bgp-rib-impl:0.4.2.Lithium-SR2&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.protocol.bgp.rib.impl.BGPSessionImpl.handleMessage(BGPSessionImpl.java:53)&lt;span class=&quot;error&quot;&gt;&amp;#91;289:org.opendaylight.bgpcep.bgp-rib-impl:0.4.2.Lithium-SR2&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at org.opendaylight.protocol.framework.AbstractProtocolSession.channelRead0(AbstractProtocolSession.java:53)&lt;span class=&quot;error&quot;&gt;&amp;#91;112:org.opendaylight.controller.protocol-framework:0.6.2.Lithium-SR2&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)&lt;span class=&quot;error&quot;&gt;&amp;#91;109:io.netty.transport:4.0.26.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339)&lt;span class=&quot;error&quot;&gt;&amp;#91;109:io.netty.transport:4.0.26.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324)&lt;span class=&quot;error&quot;&gt;&amp;#91;109:io.netty.transport:4.0.26.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:242)&lt;span class=&quot;error&quot;&gt;&amp;#91;135:io.netty.codec:4.0.26.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339)&lt;span class=&quot;error&quot;&gt;&amp;#91;109:io.netty.transport:4.0.26.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324)&lt;span class=&quot;error&quot;&gt;&amp;#91;109:io.netty.transport:4.0.26.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:242)&lt;span class=&quot;error&quot;&gt;&amp;#91;135:io.netty.codec:4.0.26.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339)&lt;span class=&quot;error&quot;&gt;&amp;#91;109:io.netty.transport:4.0.26.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324)&lt;span class=&quot;error&quot;&gt;&amp;#91;109:io.netty.transport:4.0.26.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:847)&lt;span class=&quot;error&quot;&gt;&amp;#91;109:io.netty.transport:4.0.26.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131)&lt;span class=&quot;error&quot;&gt;&amp;#91;109:io.netty.transport:4.0.26.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511)&lt;span class=&quot;error&quot;&gt;&amp;#91;109:io.netty.transport:4.0.26.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468)&lt;span class=&quot;error&quot;&gt;&amp;#91;109:io.netty.transport:4.0.26.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382)&lt;span class=&quot;error&quot;&gt;&amp;#91;109:io.netty.transport:4.0.26.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)&lt;span class=&quot;error&quot;&gt;&amp;#91;109:io.netty.transport:4.0.26.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111)&lt;span class=&quot;error&quot;&gt;&amp;#91;110:io.netty.common:4.0.26.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)&lt;span class=&quot;error&quot;&gt;&amp;#91;110:io.netty.common:4.0.26.Final&amp;#93;&lt;/span&gt;&lt;br/&gt;
	at java.lang.Thread.run(Thread.java:744)&lt;span class=&quot;error&quot;&gt;&amp;#91;:1.7.0_51&amp;#93;&lt;/span&gt;&lt;/p&gt;



&lt;p&gt;Reason&#65306;&lt;br/&gt;
There is a bug in the method below:&lt;/p&gt;

&lt;p&gt;    private static IsisPseudonodeCase serializeIsisPseudoNode(final ContainerNode pseudoIsisNode) {&lt;br/&gt;
        final IsisPseudonodeCaseBuilder builder = new IsisPseudonodeCaseBuilder();&lt;br/&gt;
        final IsisPseudonodeBuilder nodeBuilder = new IsisPseudonodeBuilder();&lt;br/&gt;
        final IsIsRouterIdentifierBuilder isisRouterId = new IsIsRouterIdentifierBuilder();&lt;br/&gt;
        if (pseudoIsisNode.getChild(ISO_SYSTEM_NID).isPresent()) &lt;/p&gt;
{
            isisRouterId.setIsoSystemId(new IsoSystemIdentifier((byte[]) pseudoIsisNode.getChild(ISO_SYSTEM_NID).get().getValue()));
        }
&lt;p&gt;        nodeBuilder.setIsIsRouterIdentifier(isisRouterId.build());&lt;/p&gt;

&lt;p&gt;        if (pseudoIsisNode.getChild(PSN_NID).isPresent()) &lt;/p&gt;
{
            nodeBuilder.setPsn((Short) pseudoIsisNode.getChild(PSN_NID).get().getValue());
        } else {
            nodeBuilder.setPsn((short) 0);
        }&lt;br/&gt;
        builder.setIsisPseudonode(nodeBuilder.build());&lt;br/&gt;
        return builder.build();&lt;br/&gt;
}&lt;br/&gt;
&lt;br/&gt;
Where the value of the input pseudoIsisNode is:&lt;br/&gt;
&lt;br/&gt;
ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:bgp-linkstate?revision=2015-02-10)isis-pseudonode, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:bgp-linkstate?revision=2015-02-10)psn, value=3, attributes={}}, ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:bgp-linkstate?revision=2015-02-10)is-is-router-identifier, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:bgp-linkstate?revision=2015-02-10)iso-system-id, value=&lt;span class=&quot;error&quot;&gt;&amp;#91;B@5dbb291d, attributes={}}&amp;#93;&lt;/span&gt;, attributes={}}], attributes={}}&lt;br/&gt;
&lt;br/&gt;
At this time, we can&#8217;t get the value of ISO_SYSTEM_NID directly. We should first get &#8220;is-is-router-identifier&#8221;, and then get the value of ISO_SYSTEM_NID.&lt;br/&gt;
&lt;br/&gt;
Modification:&lt;br/&gt;
    private static IsisPseudonodeCase serializeIsisPseudoNode(final ContainerNode pseudoIsisNode) {&lt;br/&gt;
        final IsisPseudonodeCaseBuilder builder = new IsisPseudonodeCaseBuilder();&lt;br/&gt;
        final IsisPseudonodeBuilder nodeBuilder = new IsisPseudonodeBuilder();&lt;br/&gt;
        final IsIsRouterIdentifierBuilder isisRouterId = new IsIsRouterIdentifierBuilder();&lt;br/&gt;
        if (pseudoIsisNode.getChild(ISO_PSEUDONODE_SYSTEM_NID).isPresent()) {&lt;br/&gt;
            ContainerNode isisPseudoId = (ContainerNode)pseudoIsisNode.getChild(ISO_PSEUDONODE_SYSTEM_NID).get();&lt;br/&gt;
            if (isisPseudoId.getChild(ISO_SYSTEM_NID).isPresent()){
                isisRouterId.setIsoSystemId(new IsoSystemIdentifier((byte[]) isisPseudoId.getChild(ISO_SYSTEM_NID).get().getValue()));
            }&lt;br/&gt;
        }&lt;br/&gt;
        nodeBuilder.setIsIsRouterIdentifier(isisRouterId.build());&lt;br/&gt;
&lt;br/&gt;
        if (pseudoIsisNode.getChild(PSN_NID).isPresent()) {            nodeBuilder.setPsn((Short) pseudoIsisNode.getChild(PSN_NID).get().getValue());        }
&lt;p&gt; else &lt;/p&gt;
{
            nodeBuilder.setPsn((short) 0);
        }
&lt;p&gt;        builder.setIsisPseudonode(nodeBuilder.build());&lt;br/&gt;
        return builder.build();&lt;br/&gt;
    }&lt;/p&gt;

&lt;p&gt;Where ISO_PSEUDONODE_SYSTEM_NID is:&lt;br/&gt;
    @VisibleForTesting&lt;br/&gt;
    public static final NodeIdentifier ISO_PSEUDONODE_SYSTEM_NID = new NodeIdentifier(QName.cachedReference(QName.create(NodeDescriptors.QNAME, &quot;is-is-router-identifier&quot;)));&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="23545">BGPCEP-305</key>
            <summary>Bgp linkstate fails in the isis persudondoe case&#12290;There comes a NullPointerException</summary>
                <type id="10104" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10303&amp;avatarType=issuetype">Bug</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="10000">Done</resolution>
                                        <assignee username="cdgasparini">Claudio David Gasparini</assignee>
                                    <reporter username="geng.xingyuan@zte.com.cn">Geng Xingyuan</reporter>
                        <labels>
                    </labels>
                <created>Mon, 9 Nov 2015 02:57:27 +0000</created>
                <updated>Sun, 3 Mar 2019 11:50:33 +0000</updated>
                            <resolved>Tue, 10 Nov 2015 09:15:05 +0000</resolved>
                                    <version>Bugzilla Migration</version>
                                    <fixVersion>Bugzilla Migration</fixVersion>
                                    <component>BGP</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="45201" author="cdgasparini" created="Mon, 9 Nov 2015 15:52:23 +0000"  >&lt;p&gt;&lt;a href=&quot;https://git.opendaylight.org/gerrit/#/c/29436/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/#/c/29436/&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                    <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>4594</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=4594]]></customfieldvalue>

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

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

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

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