-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Druid - Spark interoperation is problematic due to Netty dependency mismatch #4390
Copy link
Copy link
Closed
Labels
Description
Spark task (https://github.com/metamx/druid-spark-batch) which uses Druid fails with AbstractMethodError:
java.lang.AbstractMethodError
at io.netty.util.ReferenceCountUtil.touch(ReferenceCountUtil.java:73) ~[druid-selfcontained-0.10.1-mmx17.jar:0.10.1-mmx17]
at io.netty.channel.DefaultChannelPipeline.touch(DefaultChannelPipeline.java:107) ~[druid-selfcontained-0.10.1-mmx17.jar:0.10.1-mmx17]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:810) ~[druid-selfcontained-0.10.1-mmx17.jar:0.10.1-mmx17]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:723) [druid-selfcontained-0.10.1-mmx17.jar:0.10.1-mmx17]
at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:111) ~[druid-selfcontained-0.10.1-mmx17.jar:0.10.1-mmx17]
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738) [druid-selfcontained-0.10.1-mmx17.jar:0.10.1-mmx17]
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:730) [druid-selfcontained-0.10.1-mmx17.jar:0.10.1-mmx17]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:816) [druid-selfcontained-0.10.1-mmx17.jar:0.10.1-mmx17]
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:723) [druid-selfcontained-0.10.1-mmx17.jar:0.10.1-mmx17]
at io.netty.handler.timeout.IdleStateHandler.write(IdleStateHandler.java:305) [druid-selfcontained-0.10.1-mmx17.jar:0.10.1-mmx17]
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738) [druid-selfcontained-0.10.1-mmx17.jar:0.10.1-mmx17]
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:730) [druid-selfcontained-0.10.1-mmx17.jar:0.10.1-mmx17]
at io.netty.channel.AbstractChannelHandlerContext.access$1900(AbstractChannelHandlerContext.java:38) [druid-selfcontained-0.10.1-mmx17.jar:0.10.1-mmx17]
at io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.write(AbstractChannelHandlerContext.java:1089) [druid-selfcontained-0.10.1-mmx17.jar:0.10.1-mmx17]
at io.netty.channel.AbstractChannelHandlerContext$WriteAndFlushTask.write(AbstractChannelHandlerContext.java:1136) [druid-selfcontained-0.10.1-mmx17.jar:0.10.1-mmx17]
at io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.run(AbstractChannelHandlerContext.java:1078) [druid-selfcontained-0.10.1-mmx17.jar:0.10.1-mmx17]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) [druid-selfcontained-0.10.1-mmx17.jar:0.10.1-mmx17]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:403) [druid-selfcontained-0.10.1-mmx17.jar:0.10.1-mmx17]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:462) [druid-selfcontained-0.10.1-mmx17.jar:0.10.1-mmx17]
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) [druid-selfcontained-0.10.1-mmx17.jar:0.10.1-mmx17]
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138) [druid-selfcontained-0.10.1-mmx17.jar:0.10.1-mmx17]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_111]
It doesn't seem that Spark will upgrade to Netty 4.1 soon, so proposed solution is to isolate Druid's usage of Netty somehow, e. g. via shading.
Modules which currently depend on Netty 4.1 in Druid:
druid-sqldruid-rocketmqdruid-avro-extensionsdruid-servicesviadruid-sqldruid-historgramviadruid-sqldruid-indexing-serviceviahadoop-clientdruid-indexing-hadoop
But pretty much all everything in Druid is going to depend on Netty 4.1 via http-client, see metamx/http-client#29.
@gianm @drcrallen @himanshug any thoughts?
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
Type
Fields
Give feedbackNo fields configured for issues without a type.