I opened an issue for it: https://issues.apache.org/jira/browse/FLINK-8295
Timo
Am 12/19/17 um 11:14 AM schrieb Nico Kruber:
Hi Dominik,
nice assessment of the issue: in the version of the cassandra-driver we
use there is even a comment about why:
----
try {
// prevent this string from being shaded
Class.forName(String.format("%s.%s.channel.Channel", "io", "netty"));
shaded = false;
} catch (ClassNotFoundException e) {
try {
Class.forName("com.datastax.shaded.netty.channel.Channel");
shaded = true;
} catch (ClassNotFoundException e1) {
throw new AssertionError("Cannot locate Netty classes in the
classpath:" + e1);
}
}
----
@Chesnay: Should we instead shade into datastax' namespace as shown?
This would also make sure to follow the shaded path in that class which,
for example, deactivates epoll.
Nico
On 18/12/17 15:43, Timo Walther wrote:
Hi Dominik,
thanks for reporting your issue. I will loop in Chesnay that might know
more about your problem.
There were a lot of dependency changes in 1.4 to make the future more
dependency friendly. Maybe this has not been tested properly.
Regards,
Timo
Am 12/18/17 um 3:07 PM schrieb domi...@dbruhn.de:
Hey everyone,
I'm trying to migrate one of my jobs to Flink 1.4 and I'm running into
a classpath/shading error.
What happens is that when Flink calls into Cluster.connect(),
somewhere down in the stream, the cassandra library tries to
initialize Netty, and I'm getting the following exception:
Caused by: java.lang.AssertionError: Cannot locate Netty classes in
the classpath:java.lang.ClassNotFoundException:
com.datastax.shaded.netty.channel.Channel.
Full exception here:
https://gist.github.com/anonymous/16a44eabb45ad7f20d551dd29b83d2fb
I think this can be explained very easily:
1. The flink-cassandra-connector-1.4 jar contains the Datastax
Cassandra driver inside
2. The flink-cassandra-connector-1.4 jar contains a shaded (to
org.apache.flink.cassandra.shaded.io.netty) netty
3. The DataStax driver executes the following code when it initializes
netty (in NettyUtils starting line 58):
----
try {
Class.forName(String.format("%s.%s.channel.Channel", "io",
"netty"));
shaded = false;
} catch (ClassNotFoundException var9) {
try {
Class.forName("com.datastax.shaded.netty.channel.Channel");
shaded = true;
} catch (ClassNotFoundException var8) {
throw new AssertionError("Cannot locate Netty classes
in the classpath:" + var8);
}
}
----
Neither of the two packages (io.netty.channel and
com.datastax.shaded.netty.channel.Channel) are available and the
shaded one from Flink is not in the list and is never used here.
My question: Did anyone ever use the cassandra connector on 1.4. As it
looks to me it is completely broken and can never work. But maybe I'm
failing to see something. I don't include netty in my dependencies,
that could of course fix it, but I'm suspecting I will run into more
dependency problems then.
Here are my dependencies:
https://gist.github.com/anonymous/565a0ad017976502a62b2919115b31fd
What additional information can I provide?
Thanks,
Dominik