[SXP-73] Migrate TCP-MD5 support to netty's native-epoll Created: 30/Nov/15  Updated: 19/Oct/17  Resolved: 13/Jun/16

Status: Resolved
Project: sxp
Component/s: General
Affects Version/s: unspecified
Fix Version/s: None

Type: Bug
Reporter: Robert Varga 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


Issue Links:
Blocks
blocks TSC-71 Milestone: Archive TCP-MD5 project Resolved
is blocked by ODLPARENT-26 Upgrade netty to 4.0.33 or later Resolved
External issue ID: 4693

 Description   

Netty 4.0.33 includes TCPMD5 support with native-epoll transport. Migrate to using that instead of tcpmd5 project's classes.



 Comments   
Comment by Martin Mihálek [ 21/Jan/16 ]

May by fixed after netty-transpot-native-epoll dependency is OSGI bundle,
as mentioned above netty-transpot-native-epoll is not OSQI bundle and after embeding it into sxp-core bundle netty have problem with loading resources from other bundles ... which result in UnsatisfiedLinkError or ClassNotFoundException.

After embeding netty epoll, commons, buffer and transport dependencies all resources are loaded correctly but after wards SocketChannel is not compatibile with some of others netty features such as Lengthfieldbasedframedecoder or ByteArrayEncoder in this specific case and after adding it into channel pipeline throws error IncompatibleClassChangeError.

Comment by Robert Varga [ 21/Jan/16 ]

Can you post the specific errors and patches which reproduce them?

Comment by Martin Mihálek [ 21/Jan/16 ]

https://git.opendaylight.org/gerrit/#/c/30887/ patch

io.netty.channel.ChannelPipelineException: org.opendaylight.sxp.core.handler.LengthFieldBasedFrameDecoderImpl.handlerRemoved() has thrown an exception.
at io.netty.channel.DefaultChannelPipeline.callHandlerRemoved0(DefaultChannelPipeline.java:530)[229:org.opendaylight.sxp.core:1.3.0.SNAPSHOT]
at io.netty.channel.DefaultChannelPipeline.callHandlerRemoved(DefaultChannelPipeline.java:521)[229:org.opendaylight.sxp.core:1.3.0.SNAPSHOT]
at io.netty.channel.DefaultChannelPipeline.remove0(DefaultChannelPipeline.java:351)[229:org.opendaylight.sxp.core:1.3.0.SNAPSHOT]
at io.netty.channel.DefaultChannelPipeline.remove(DefaultChannelPipeline.java:322)[229:org.opendaylight.sxp.core:1.3.0.SNAPSHOT]
at io.netty.channel.DefaultChannelPipeline.callHandlerAdded0(DefaultChannelPipeline.java:491)[229:org.opendaylight.sxp.core:1.3.0.SNAPSHOT]
at io.netty.channel.DefaultChannelPipeline.callHandlerAdded(DefaultChannelPipeline.java:482)[229:org.opendaylight.sxp.core:1.3.0.SNAPSHOT]
at io.netty.channel.DefaultChannelPipeline.addLast0(DefaultChannelPipeline.java:146)[229:org.opendaylight.sxp.core:1.3.0.SNAPSHOT]
at io.netty.channel.DefaultChannelPipeline.addLast(DefaultChannelPipeline.java:129)[229:org.opendaylight.sxp.core:1.3.0.SNAPSHOT]
at io.netty.channel.DefaultChannelPipeline.addLast(DefaultChannelPipeline.java:120)[229:org.opendaylight.sxp.core:1.3.0.SNAPSHOT]
at org.opendaylight.sxp.core.service.ConnectFacade$3.initChannel(ConnectFacade.java:100)[229:org.opendaylight.sxp.core:1.3.0.SNAPSHOT]
at org.opendaylight.sxp.core.service.ConnectFacade$3.initChannel(ConnectFacade.java:97)[229:org.opendaylight.sxp.core:1.3.0.SNAPSHOT]
at io.netty.channel.ChannelInitializer.channelRegistered(ChannelInitializer.java:68)[229:org.opendaylight.sxp.core:1.3.0.SNAPSHOT]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRegistered(AbstractChannelHandlerContext.java:143)[229:org.opendaylight.sxp.core:1.3.0.SNAPSHOT]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRegistered(AbstractChannelHandlerContext.java:129)[229:org.opendaylight.sxp.core:1.3.0.SNAPSHOT]
at io.netty.channel.DefaultChannelPipeline.fireChannelRegistered(DefaultChannelPipeline.java:733)[229:org.opendaylight.sxp.core:1.3.0.SNAPSHOT]
at io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:450)[229:org.opendaylight.sxp.core:1.3.0.SNAPSHOT]
at io.netty.channel.AbstractChannel$AbstractUnsafe.access$100(AbstractChannel.java:378)[229:org.opendaylight.sxp.core:1.3.0.SNAPSHOT]
at io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:424)[229:org.opendaylight.sxp.core:1.3.0.SNAPSHOT]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:358)[229:org.opendaylight.sxp.core:1.3.0.SNAPSHOT]
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:259)[229:org.opendaylight.sxp.core:1.3.0.SNAPSHOT]
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112)[229:org.opendaylight.sxp.core:1.3.0.SNAPSHOT]
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)[229:org.opendaylight.sxp.core:1.3.0.SNAPSHOT]
at java.lang.Thread.run(Thread.java:745)[:1.7.0_91]
Caused by: java.lang.IncompatibleClassChangeError
at io.netty.channel.DefaultChannelPipeline.callHandlerRemoved0(DefaultChannelPipeline.java:527)[229:org.opendaylight.sxp.core:1.3.0.SNAPSHOT]
... 22 more

Comment by Martin Mihálek [ 10/Jun/16 ]

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

Minimal version of netty is 4.0.37.Final for using TCP-MD5 from netty epoll.

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