Details
-
Bug
-
Status: Resolved
-
Resolution: Done
-
Bugzilla Migration
-
None
-
Operating System: All
Platform: All
-
3043
Description
Tested on Lithium, build http://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/integration/distribution-karaf/0.3.0-SNAPSHOT/distribution-karaf-0.3.0-20150421.015145-1180.tar.gz
Steps to reproduce:
1. Prepare ODL: Change featuresBoot to contain only "odl-restconf" and "odl-bgpcep-bgp-all".
2. Place the file 41-bgp-example.xml from the attached archive into etc/opendaylight/karaf subdirectory of the ODL installation.
3. Boot ODL.
4. Wait for the empty topology to appear:
curl -u 'admin:admin' 127.0.0.2:8181/restconf/operational/network-topology:network-topology/topology/example-ipv4-topology >curl-000.out
(you should get a "curl-000.out" file that is around 100 bytes long)
5. Start the "play.py" tool from the archive:
python play.py --gencount=2
6. After the tool responds with "Sending completed", verify that the routes are in topology:
curl -u 'admin:admin' 127.0.0.2:8181/restconf/operational/network-topology:network-topology/topology/example-ipv4-topology >curl-001.out
(the file curl-001.out shall now be around 240 bytes long)
7. Go to the terminal window with the "play.py" tool and hit Ctrl-C to terminate it.
8. Verify that the topology is now empty:
curl -u 'admin:admin' 127.0.0.2:8181/restconf/operational/network-topology:network-topology/topology/example-ipv4-topology >curl-003.out
(you should get a "curl-003.out" file that is the same as "curl-000.out")
9. Start the "play.py" tool again:
python play.py --gencount=2
10. Look at the topology again:
curl -u 'admin:admin' 127.0.0.2:8181/restconf/operational/network-topology:network-topology/topology/example-ipv4-topology >curl-004.out
11. The "curl-004.out" produced with step 10 shall be the same as "curl-001.out" produced in step 6 but it is the same as "curl-000.out" and "curl-003.out" (i.e. empty) instead.
12. Looking into logs you will now see this exception (note the "Transaction factory was closed" message below):
2015-04-22 11:15:38,025 | WARN | oupCloseable-3-2 | DefaultChannelPipeline | 154 - 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.
io.netty.channel.ChannelPipelineException: org.opendaylight.protocol.bgp.rib.impl.BGPSessionImpl.handlerAdded() has thrown an exception; removed.
at io.netty.channel.DefaultChannelPipeline.callHandlerAdded0(DefaultChannelPipeline.java:501)[153:io.netty.transport:4.0.26.Final]
at io.netty.channel.DefaultChannelPipeline.callHandlerAdded(DefaultChannelPipeline.java:482)[153:io.netty.transport:4.0.26.Final]
at io.netty.channel.DefaultChannelPipeline.replace0(DefaultChannelPipeline.java:455)[153:io.netty.transport:4.0.26.Final]
at io.netty.channel.DefaultChannelPipeline.replace(DefaultChannelPipeline.java:405)[153:io.netty.transport:4.0.26.Final]
at io.netty.channel.DefaultChannelPipeline.replace(DefaultChannelPipeline.java:372)[153:io.netty.transport:4.0.26.Final]
at org.opendaylight.protocol.framework.AbstractSessionNegotiator.negotiationSuccessful(AbstractSessionNegotiator.java:46)[156:org.opendaylight.controller.protocol-framework:0.6.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.rib.impl.AbstractBGPSessionNegotiator.handleMessage(AbstractBGPSessionNegotiator.java:147)[236:org.opendaylight.bgpcep.bgp-rib-impl:0.4.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.rib.impl.AbstractBGPSessionNegotiator.handleMessage(AbstractBGPSessionNegotiator.java:42)[236:org.opendaylight.bgpcep.bgp-rib-impl:0.4.0.SNAPSHOT]
at org.opendaylight.protocol.framework.AbstractSessionNegotiator.channelRead(AbstractSessionNegotiator.java:93)[156:org.opendaylight.controller.protocol-framework:0.6.0.SNAPSHOT]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339)[153:io.netty.transport:4.0.26.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324)[153:io.netty.transport:4.0.26.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:242)[179:io.netty.codec:4.0.26.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339)[153:io.netty.transport:4.0.26.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324)[153:io.netty.transport:4.0.26.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:242)[179:io.netty.codec:4.0.26.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:339)[153:io.netty.transport:4.0.26.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:324)[153:io.netty.transport:4.0.26.Final]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:847)[153:io.netty.transport:4.0.26.Final]
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131)[153:io.netty.transport:4.0.26.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511)[153:io.netty.transport:4.0.26.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468)[153:io.netty.transport:4.0.26.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382)[153:io.netty.transport:4.0.26.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)[153:io.netty.transport:4.0.26.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111)[154:io.netty.common:4.0.26.Final]
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)[154:io.netty.common:4.0.26.Final]
at java.lang.Thread.run(Thread.java:745)[:1.7.0_65]
Caused by: java.lang.IllegalStateException: Transaction factory was closed. No further operations allowed.
at com.google.common.base.Preconditions.checkState(Preconditions.java:173)[37:com.google.guava:18.0.0]
at org.opendaylight.controller.md.sal.dom.broker.impl.AbstractDOMForwardedTransactionFactory.checkNotClosed(AbstractDOMForwardedTransactionFactory.java:233)[192:org.opendaylight.controller.sal-broker-impl:1.2.0.SNAPSHOT]
at org.opendaylight.controller.md.sal.dom.broker.impl.AbstractDOMForwardedTransactionFactory.newWriteOnlyTransaction(AbstractDOMForwardedTransactionFactory.java:149)[192:org.opendaylight.controller.sal-broker-impl:1.2.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.rib.impl.AdjRibInWriter.transform(AdjRibInWriter.java:127)[236:org.opendaylight.bgpcep.bgp-rib-impl:0.4.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.rib.impl.BGPPeer.onSessionUp(BGPPeer.java:187)[236:org.opendaylight.bgpcep.bgp-rib-impl:0.4.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.rib.impl.BGPPeer.onSessionUp(BGPPeer.java:65)[236:org.opendaylight.bgpcep.bgp-rib-impl:0.4.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.rib.impl.BGPSessionImpl.sessionUp(BGPSessionImpl.java:368)[236:org.opendaylight.bgpcep.bgp-rib-impl:0.4.0.SNAPSHOT]
at org.opendaylight.protocol.framework.AbstractProtocolSession.handlerAdded(AbstractProtocolSession.java:58)[156:org.opendaylight.controller.protocol-framework:0.6.0.SNAPSHOT]
at io.netty.channel.DefaultChannelPipeline.callHandlerAdded0(DefaultChannelPipeline.java:488)[153:io.netty.transport:4.0.26.Final]
... 25 more