apache-sparknettyplaybackcassandra-driver

Play Cassandra Netty Server null pointer exception


Hi i am using playframework with technologies like ,

spark = "2.3.1",
akka = "2.4.7"
hadoop = "2.7.7"
spring = "4.2.6.RELEASE",
spark-cassandra-connector 2.0.9 ,
cassandra-driver-core 3.0.6

i am getting below warning, at the time of project clean compile

c.d.d.c.NettyUtil - Found Netty's native epoll transport, but not running on linux-based operating system. Using NIO instead

 io.netty:netty-handler:4.0.56.Final is selected over 4.0.36.Final
     +- com.datastax.cassandra:cassandra-driver-core:3.5.1 (depends on 4.0.56.Final)
     +- com.typesafe.netty:netty-reactive-streams:1.0.6    (depends on 4.0.36.Final)
     +- io.netty:netty-codec-http:4.0.36.Final             (depends on 4.0.36.Final)

at the time of sbt run , getting below error

java.lang.NullPointerException
        at io.netty.channel.group.DefaultChannelGroup.add(DefaultChannelGroup.java:146)
        at play.core.server.NettyServer.bind(NettyServer.scala:140)
        at play.core.server.NettyServer.play$core$server$NettyServer$$bindChannel(NettyServer.scala:224)
        at play.core.server.NettyServer$$anonfun$1.apply(NettyServer.scala:216)
        at play.core.server.NettyServer$$anonfun$1.apply(NettyServer.scala:216)
        at scala.Option.map(Option.scala:146)
        at play.core.server.NettyServer.<init>(NettyServer.scala:216)
        at play.core.server.NettyServerProvider.createServer(NettyServer.scala:279)
        at play.core.server.NettyServerProvider.createServer(NettyServer.scala:278)
        at play.core.server.DevServerStart$$anonfun$mainDev$1.apply(DevServerStart.scala:225)
        at play.core.server.DevServerStart$$anonfun$mainDev$1.apply(DevServerStart.scala:61)
        at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
        at play.core.server.DevServerStart$.mainDev(DevServerStart.scala:60)
        at play.core.server.DevServerStart$.mainDevHttpMode(DevServerStart.scala:50)
        at play.core.server.DevServerStart.mainDevHttpMode(DevServerStart.scala)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at play.runsupport.Reloader$.startDevMode(Reloader.scala:234)
        at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.devModeServer$lzycompute$1(PlayRun.scala:74)
        at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.play$sbt$run$PlayRun$$anonfun$$anonfun$$anonfun$$devModeServer$1(PlayRun.scala:74)
        at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.apply(PlayRun.scala:100)
        at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.apply(PlayRun.scala:53)
        at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
        at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
        at sbt.std.Transform$$anon$4.work(System.scala:63)
        at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
        at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
        at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
        at sbt.Execute.work(Execute.scala:237)
        at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
        at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
        at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
        at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
[error] (*:playRun) java.lang.reflect.InvocationTargetException

How to solve netty issue? is there version mismatched issue??


Solution

  • this issue is related to Cassandra , so, for now, i used shaded version of cassandra. Issue occurred because the application uses another netty version, so to avoid that confilcts ,provided shaded version jar of cassandra which bundles Netty Classes under different package

    "com.datastax.cassandra" % "cassandra-driver-core" % "3.1.4" exclude("io.netty", "*") classifier "shaded"

    for refernce : https://docs.datastax.com/en/developer/java-driver/3.1/manual/shaded_jar/

    also ,you can use dependencyOverrides:

    To change the version selected, add an override:

    dependencyOverrides += "" % "" % ""

    ref : https://www.scala-sbt.org/1.x/docs/Library-Management.html#Overriding+a+version