In our project, we have the Flink stream task (1.1.3), which reads kafka from one queue, performs map function conversion and writes to another queue.
This worked well until we presented the outgoing REST request as part of the stream. To do this, we used the PlayFramework WSClient (as it is used elsewhere on our stack) and created it in the code as follows:
val config = new AhcWSClientConfig(wsClientConfig = WSClientConfig()) val builder = new AhcConfigBuilder(config) val ahcConfig = builder.configure().build() new AhcWSClient(ahcConfig)(ActorMaterializer()(ActorSystem()))
This works well locally, but when deploying and starting in the cluster, I got this exception:
java.lang.NoSuchMethodError: akka.util.Helpers$.toRootLowerCase(Ljava/lang/String;)Ljava/lang/String; at akka.stream.StreamSubscriptionTimeoutSettings$.apply(ActorMaterializer.scala:491) at akka.stream.ActorMaterializerSettings$.apply(ActorMaterializer.scala:243) at akka.stream.ActorMaterializerSettings$.apply(ActorMaterializer.scala:232) at akka.stream.ActorMaterializer$$anonfun$1.apply(ActorMaterializer.scala:41) at akka.stream.ActorMaterializer$$anonfun$1.apply(ActorMaterializer.scala:41) at scala.Option.getOrElse(Option.scala:121) at akka.stream.ActorMaterializer$.apply(ActorMaterializer.scala:41) at com.ourstuff.etl.core.utils.web.GlobalWSClient$.generateClient(WSClientFactory.scala:32)
Exploring this, I suggested that this is a collision between Akka 2.3.x (provided by Flink 1.1.X) and Akka 2.4.x (given in PlayFramework).
We upgraded the Flink cluster to 1.3.1 (as well as our code's dependency on Flink), assuming this solves the problem. But the same problem persists.
Any idea on what else could cause this?
Joef goldstein
source share