I've created a pull request for the fix:
https://github.com/apache/flink/pull/3556

It would be nice if one of the issue reporters could validate that the
cassandra connector works after the fix.
If it is a valid fix, I would like to include it into the upcoming 1.2.1
release.

On Thu, Mar 16, 2017 at 6:08 PM, Robert Metzger <rmetz...@apache.org> wrote:

> Yep, this is definitively a bug / misconfiguration in the build system.
>
> The cassandra client defines metrics-core as a dependency, but the shading
> is dropping the dependency when building the dependency reduced pom.
> To resolve the issue, we need to add the following line into the shading
> config of the cassandra module:
>
> <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
>
> This makes the metrics dependency appear again in the dep red pom.
>
>
> I've filed a JIRA: https://issues.apache.org/jira/browse/FLINK-6084 and
> will open a PR.
>
> On Thu, Mar 16, 2017 at 1:08 PM, Stephan Ewen <se...@apache.org> wrote:
>
>> Can we improve the Flink experience here by adding this dependency
>> directly to the cassandra connector pom.xml (so that user jars always pull
>> it in via transitivity)?
>>
>> On Wed, Mar 15, 2017 at 4:09 PM, Nico <nico.franz...@gmail.com> wrote:
>>
>>> Hi @all,
>>>
>>> I came back to this issue today...
>>>
>>> @Robert:
>>> "com/codahale/metrics/Metric" class was not available in the user code
>>> jar
>>>
>>> Even after adding the metric class into the build-jar profile of the pom
>>> file, more "class not found" errors occur. So the only solution was to add
>>> the whole dependency:
>>>
>>> <dependency>
>>>    <groupId>com.codahale.metrics</groupId>
>>>    <artifactId>metrics-core</artifactId>
>>>    <version>3.0.2</version>
>>> </dependency>
>>>
>>>
>>> This worked for me.
>>>
>>> Best,
>>> Nico
>>>
>>>
>>>
>>> 2017-03-06 11:46 GMT+01:00 Chesnay Schepler <ches...@apache.org>:
>>>
>>>> Hello,
>>>>
>>>> i believe the cassandra connector is not shading it's dependencies
>>>> properly. This didn't cause issues in the
>>>> past since flink used to have a dependency on codahale metrics as well.
>>>>
>>>> Please open a JIRA for this issue.
>>>>
>>>> Regards,
>>>> Chesnay
>>>>
>>>>
>>>> On 06.03.2017 11:32, Tarandeep Singh wrote:
>>>>
>>>> Hi Robert & Nico,
>>>>
>>>> I am facing the same problem (java.lang.NoClassDefFoundError:
>>>> com/codahale/metrics/Metric)
>>>> Can you help me identify shading issue in pom.xml file.
>>>>
>>>> My pom.xml content-
>>>> ---------------------------------------------
>>>>
>>>> <project xmlns="http://maven.apache.org/POM/4.0.0"; 
>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";   
>>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
>>>> http://maven.apache.org/xsd/maven-4.0.0.xsd";>   
>>>> <modelVersion>4.0.0</modelVersion>      
>>>> <groupId>rfk-dataplatform</groupId>   
>>>> <artifactId>stream-processing</artifactId>   <version>0.1.0</version>   
>>>> <packaging>jar</packaging>   <name>Stream processing</name>   <properties> 
>>>>      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    
>>>>   <flink.version>1.2.0</flink.version>      
>>>> <slf4j.version>1.7.7</slf4j.version>      
>>>> <log4j.version>1.2.17</log4j.version>   </properties>   <dependencies>     
>>>>  <dependency>         <groupId>org.apache.flink</groupId>         
>>>> <artifactId>flink-streaming-java_2.10</artifactId>         
>>>> <version>${flink.version}</version>      </dependency>      <dependency>   
>>>>       <groupId>org.apache.flink</groupId>         
>>>> <artifactId>flink-clients_2.10</artifactId>         
>>>> <version>${flink.version}</version>      </dependency>      <dependency>   
>>>>       <groupId>org.apache.flink</groupId>         
>>>> <artifactId>flink-connector-cassandra_2.10</artifactId>         
>>>> <version>1.2.0</version>      </dependency>        <dependency>            
>>>> <groupId>org.apache.flink</groupId>            
>>>> <artifactId>flink-statebackend-rocksdb_2.10</artifactId>            
>>>> <version>1.2.0</version>        </dependency>      <dependency>         
>>>> <groupId>org.slf4j</groupId>         
>>>> <artifactId>slf4j-log4j12</artifactId>         
>>>> <version>${slf4j.version}</version>      </dependency>      <dependency>   
>>>>       <groupId>log4j</groupId>         <artifactId>log4j</artifactId>      
>>>>    <version>${log4j.version}</version>      </dependency>        
>>>> <dependency>            <groupId>org.apache.avro</groupId>            
>>>> <artifactId>avro</artifactId>            <version>1.8.1</version>        
>>>> </dependency>        <dependency>            <groupId>org.testng</groupId> 
>>>>            <artifactId>testng</artifactId>            
>>>> <version>6.8</version>            <scope>test</scope>        </dependency> 
>>>>        <!-- flink kafka connector -->        <dependency>            
>>>> <groupId>org.apache.flink</groupId>            
>>>> <artifactId>flink-connector-kafka-0.8_2.10</artifactId>            
>>>> <version>1.2.0</version>        </dependency>        <!-- java influxdb 
>>>> client -->        <dependency>            <groupId>org.influxdb</groupId>  
>>>>           <artifactId>influxdb-java</artifactId>            
>>>> <version>2.5</version>        </dependency>    </dependencies>   
>>>> <profiles>      <profile>         <!-- Profile for packaging correct JAR 
>>>> files -->         <id>build-jar</id>         <activation>            
>>>> <activeByDefault>false</activeByDefault>         </activation>         
>>>> <dependencies>            <dependency>               
>>>> <groupId>org.apache.flink</groupId>               
>>>> <artifactId>flink-java</artifactId>               
>>>> <version>${flink.version}</version>               <scope>provided</scope>  
>>>>           </dependency>            <dependency>               
>>>> <groupId>org.apache.flink</groupId>               
>>>> <artifactId>flink-streaming-java_2.10</artifactId>               
>>>> <version>${flink.version}</version>               <scope>provided</scope>  
>>>>           </dependency>            <dependency>               
>>>> <groupId>org.apache.flink</groupId>               
>>>> <artifactId>flink-clients_2.10</artifactId>               
>>>> <version>${flink.version}</version>               <scope>provided</scope>  
>>>>           </dependency>            <dependency>               
>>>> <groupId>org.slf4j</groupId>               
>>>> <artifactId>slf4j-log4j12</artifactId>               
>>>> <version>${slf4j.version}</version>               <scope>provided</scope>  
>>>>           </dependency>            <dependency>               
>>>> <groupId>log4j</groupId>               <artifactId>log4j</artifactId>      
>>>>          <version>${log4j.version}</version>               
>>>> <scope>provided</scope>            </dependency>         </dependencies>   
>>>>          <build>            <plugins>               <!-- disable the 
>>>> exclusion rules -->               <plugin>                  
>>>> <groupId>org.apache.maven.plugins</groupId>                  
>>>> <artifactId>maven-shade-plugin</artifactId>                  
>>>> <version>2.4.1</version>                  <executions>                     
>>>> <execution>                        <phase>package</phase>                  
>>>>       <goals>                           <goal>shade</goal>                 
>>>>        </goals>                        <configuration>                     
>>>>       <artifactSet>                              <excludes 
>>>> combine.self="override"></excludes>                           
>>>> </artifactSet>                        </configuration>                     
>>>> </execution>                  </executions>               </plugin>        
>>>>     </plugins>         </build>      </profile>   </profiles>   <build>    
>>>>   <plugins>         <plugin>            
>>>> <groupId>org.apache.maven.plugins</groupId>            
>>>> <artifactId>maven-shade-plugin</artifactId>            
>>>> <version>2.4.1</version>            <executions>               <!-- Run 
>>>> shade goal on package phase -->               <execution>                  
>>>> <phase>package</phase>                  <goals>                     
>>>> <goal>shade</goal>                  </goals>                  
>>>> <configuration>                     <artifactSet>                        
>>>> <excludes>                           <!-- This list contains all 
>>>> dependencies of flink-dist                           Everything else will 
>>>> be packaged into the fat-jar                           -->                 
>>>>           <exclude>org.apache.flink:flink-annotations</exclude>            
>>>>                <exclude>org.apache.flink:flink-shaded-hadoop2</exclude>    
>>>>                        
>>>> <exclude>org.apache.flink:flink-shaded-curator-recipes</exclude>           
>>>>                 <exclude>org.apache.flink:flink-core</exclude>             
>>>>               <exclude>org.apache.flink:flink-java</exclude>               
>>>>             <exclude>org.apache.flink:flink-scala_2.10</exclude>           
>>>>                 <exclude>org.apache.flink:flink-runtime_2.10</exclude>     
>>>>                       
>>>> <exclude>org.apache.flink:flink-optimizer_2.10</exclude>                   
>>>>         <exclude>org.apache.flink:flink-clients_2.10</exclude>             
>>>>               <exclude>org.apache.flink:flink-avro_2.10</exclude>          
>>>>                  
>>>> <exclude>org.apache.flink:flink-examples-batch_2.10</exclude>              
>>>>              
>>>> <exclude>org.apache.flink:flink-examples-streaming_2.10</exclude>          
>>>>                  
>>>> <exclude>org.apache.flink:flink-streaming-java_2.10</exclude>              
>>>>              
>>>> <exclude>org.apache.flink:flink-streaming-scala_2.10</exclude>             
>>>>               <exclude>org.apache.flink:flink-scala-shell_2.10</exclude>   
>>>>                         <exclude>org.apache.flink:flink-python</exclude>   
>>>>                         
>>>> <exclude>org.apache.flink:flink-metrics-core</exclude>                     
>>>>       <exclude>org.apache.flink:flink-metrics-jmx</exclude>                
>>>>            
>>>> <exclude>org.apache.flink:flink-statebackend-rocksdb_2.10</exclude>        
>>>>                    <!-- Also exclude very big transitive dependencies of 
>>>> Flink                           WARNING: You have to remove these excludes 
>>>> if your code relies on other                           versions of these 
>>>> dependencies.                           -->                           
>>>> <exclude>log4j:log4j</exclude>                           
>>>> <exclude>org.scala-lang:scala-library</exclude>                           
>>>> <exclude>org.scala-lang:scala-compiler</exclude>                           
>>>> <exclude>org.scala-lang:scala-reflect</exclude>                           
>>>> <exclude>com.data-artisans:flakka-actor_*</exclude>                        
>>>>    <exclude>com.data-artisans:flakka-remote_*</exclude>                    
>>>>        <exclude>com.data-artisans:flakka-slf4j_*</exclude>                 
>>>>           <exclude>io.netty:netty-all</exclude>                           
>>>> <exclude>io.netty:netty</exclude>                           
>>>> <exclude>commons-fileupload:commons-fileupload</exclude>                   
>>>>         <exclude>org.apache.avro:avro</exclude>                           
>>>> <exclude>commons-collections:commons-collections</exclude>                 
>>>>           <exclude>org.codehaus.jackson:jackson-core-asl</exclude>         
>>>>                   
>>>> <exclude>org.codehaus.jackson:jackson-mapper-asl</exclude>                 
>>>>           <exclude>com.thoughtworks.paranamer:paranamer</exclude>          
>>>>                  <exclude>org.xerial.snappy:snappy-java</exclude>          
>>>>                  <exclude>org.apache.commons:commons-compress</exclude>    
>>>>                        <exclude>org.tukaani:xz</exclude>                   
>>>>         <exclude>com.esotericsoftware.kryo:kryo</exclude>                  
>>>>          <exclude>com.esotericsoftware.minlog:minlog</exclude>             
>>>>               <exclude>org.objenesis:objenesis</exclude>                   
>>>>         <exclude>com.twitter:chill_*</exclude>                           
>>>> <exclude>com.twitter:chill-java</exclude>                           
>>>> <exclude>commons-lang:commons-lang</exclude>                           
>>>> <exclude>junit:junit</exclude>                           
>>>> <exclude>org.apache.commons:commons-lang3</exclude>                        
>>>>    <exclude>org.slf4j:slf4j-api</exclude>                           
>>>> <exclude>org.slf4j:slf4j-log4j12</exclude>                           
>>>> <exclude>log4j:log4j</exclude>                           
>>>> <exclude>org.apache.commons:commons-math</exclude>                         
>>>>   <exclude>org.apache.sling:org.apache.sling.commons.json</exclude>        
>>>>                    <exclude>commons-logging:commons-logging</exclude>      
>>>>                      <exclude>commons-codec:commons-codec</exclude>        
>>>>                    
>>>> <exclude>com.fasterxml.jackson.core:jackson-core</exclude>                 
>>>>           <exclude>com.fasterxml.jackson.core:jackson-databind</exclude>   
>>>>                         
>>>> <exclude>com.fasterxml.jackson.core:jackson-annotations</exclude>          
>>>>                  <exclude>stax:stax-api</exclude>                          
>>>>  <exclude>com.typesafe:config</exclude>                           
>>>> <exclude>org.uncommons.maths:uncommons-maths</exclude>                     
>>>>       <exclude>com.github.scopt:scopt_*</exclude>                          
>>>>  <exclude>commons-io:commons-io</exclude>                           
>>>> <exclude>commons-cli:commons-cli</exclude>                        
>>>> </excludes>                     </artifactSet>                     
>>>> <filters>                        <filter>                           
>>>> <artifact>org.apache.flink:*</artifact>                           
>>>> <excludes>                              <!-- exclude shaded google but 
>>>> include shaded curator -->                              
>>>> <exclude>org/apache/flink/shaded/com/**</exclude>                          
>>>>     <exclude>web-docs/**</exclude>                           </excludes>   
>>>>                      </filter>                        <filter>             
>>>>               <artifact>*:*</artifact>                           
>>>> <excludes>                              <exclude>META-INF/*.SF</exclude>   
>>>>                            <exclude>META-INF/*.DSA</exclude>               
>>>>                <exclude>META-INF/*.RSA</exclude>                           
>>>> </excludes>                        </filter>                     
>>>> </filters>                     
>>>> <createDependencyReducedPom>false</createDependencyReducedPom>             
>>>>      </configuration>               </execution>            </executions>  
>>>>        </plugin>         <plugin>            
>>>> <groupId>org.apache.maven.plugins</groupId>            
>>>> <artifactId>maven-compiler-plugin</artifactId>            
>>>> <version>3.1</version>            <configuration>               
>>>> <source>1.8</source>               <target>1.8</target>            
>>>> </configuration>         </plugin>            <plugin>                
>>>> <groupId>org.apache.avro</groupId>                
>>>> <artifactId>avro-maven-plugin</artifactId>                
>>>> <version>1.8.1</version>                <executions>                    
>>>> <execution>                        <phase>generate-sources</phase>         
>>>>                <goals>                            <goal>schema</goal>      
>>>>                   </goals>                        <configuration>          
>>>>                   <stringType>String</stringType>                          
>>>>   <fieldVisibility>PRIVATE</fieldVisibility>                            
>>>> <sourceDirectory>${project.basedir}/src/main/schema/</sourceDirectory>     
>>>>                        
>>>> <outputDirectory>${project.basedir}/src/main/java/</outputDirectory>       
>>>>                  </configuration>                    </execution>          
>>>>       </executions>            </plugin>            <plugin>               
>>>>  <groupId>org.apache.maven.plugins</groupId>                
>>>> <artifactId>maven-compiler-plugin</artifactId>                
>>>> <configuration>                    <source>1.8</source>                    
>>>> <target>1.8</target>                </configuration>            </plugin>  
>>>>     </plugins>         </build></project>
>>>>
>>>>
>>>> ---------------------------------------------
>>>>
>>>>
>>>> On Sun, Feb 12, 2017 at 1:56 AM, Robert Metzger <rmetz...@apache.org>
>>>> wrote:
>>>>
>>>>> Hi Nico,
>>>>> The cassandra connector should be available on Maven central:
>>>>> http://search.maven.org/#artifactdetails%7Corg.apac
>>>>> he.flink%7Cflink-connector-cassandra_2.10%7C1.2.0%7Cjar
>>>>>
>>>>> Potentially, the issue you've mentioned is due to some shading issue.
>>>>> Is the "com/codahale/metrics/Metric" class in your user code jar?
>>>>>
>>>>> On Thu, Feb 9, 2017 at 2:56 PM, Nico < <nico.franz...@gmail.com>
>>>>> nico.franz...@gmail.com> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I would like to upgrade to the new stable version 1.2 - but i get an
>>>>>> ClassNotFound exception when i start the application.
>>>>>>
>>>>>> Caused by: java.lang.NoClassDefFoundError:
>>>>>> com/codahale/metrics/Metric
>>>>>>     at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1
>>>>>> 367)
>>>>>>     at com.datastax.driver.core.Cluster.init(Cluster.java:162)
>>>>>>     at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:3
>>>>>> 33)
>>>>>>     at com.datastax.driver.core.Cluster.connectAsync(Cluster.java:3
>>>>>> 08)
>>>>>>     at com.datastax.driver.core.Cluster.connect(Cluster.java:250)
>>>>>>     at org.apache.flink.streaming.connectors.cassandra.CassandraSin
>>>>>> kBase.open(CassandraSinkBase.java:67)
>>>>>>     at org.apache.flink.streaming.connectors.cassandra.CassandraTup
>>>>>> leSink.open(CassandraTupleSink.java:42)
>>>>>>     at org.apache.flink.api.common.functions.util.FunctionUtils.ope
>>>>>> nFunction(FunctionUtils.java:36)
>>>>>>     at org.apache.flink.streaming.api.operators.AbstractUdfStreamOp
>>>>>> erator.open(AbstractUdfStreamOperator.java:112)
>>>>>>     at org.apache.flink.streaming.runtime.tasks.StreamTask.openAllO
>>>>>> perators(StreamTask.java:386)
>>>>>>     at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(S
>>>>>> treamTask.java:262)
>>>>>>     at org.apache.flink.runtime.taskmanager.Task.run(Task.java:655)
>>>>>>     at java.lang.Thread.run(Thread.java:745)
>>>>>>
>>>>>>
>>>>>> So I think the cassandra connector is the reason for it. Moreover, i
>>>>>> don't see a version 1.2 in the maven repository for the connector as
>>>>>> mentioned in the doc.
>>>>>>
>>>>>> <dependency>
>>>>>>   <groupId>org.apache.flink</groupId>
>>>>>>   <artifactId>flink-connector-cassandra_2.10</artifactId>
>>>>>>   <version>1.2.0</version>
>>>>>> </dependency>
>>>>>>
>>>>>> Is there a plan to release a new version?
>>>>>>
>>>>>> Best,
>>>>>> Nico
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>

Reply via email to