Schema Generation Prepare Update trying to re-create table

71 views
Skip to first unread message

Giuseppe Alfieri

unread,
Sep 24, 2015, 3:38:25 AM9/24/15
to kundera-discuss
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
   
<persistence-unit name="cassandra_pu">
       
<provider>com.impetus.kundera.KunderaPersistence</provider>
       
<class>User</class>    
       
<properties>            
           
<property name="kundera.nodes" value="localhost"/>
           
<property name="kundera.port" value="9042"/>
           
<property name="kundera.keyspace" value="KunderaExamples"/>
           
<property name="kundera.dialect" value="cassandra"/>
           
<property name="kundera.ddl.auto.prepare" value="update" />
           
<property name="kundera.client.lookup.class"
               
value="com.impetus.kundera.client.cassandra.dsdriver.DSClientFactory" />
           
<property name="kundera.cache.config.resource" value="/ehcache-test.xml"/>                  
       
</properties>      
   
</persistence-unit>
</persistence>

09:27:52.783 [main] INFO  c.i.k.p.EntityManagerFactoryImpl - Loading Core
09:27:52.792 [main] INFO  c.impetus.kundera.loader.CoreLoader - Loading Kundera Core Metdata ...
09:27:52.793 [main] INFO  c.i.k.p.EntityManagerFactoryImpl - Loading Persistence Unit MetaData For Persistence Unit(s) cassandra_pu.
09:27:52.799 [main] INFO  c.i.k.c.PersistenceUnitConfiguration - Loading Metadata from persistence.xml ...
09:27:52.911 [main] INFO  c.i.k.c.PersistenceUnitConfiguration - Finishing persistence unit metadata configuration ...
09:27:52.927 [main] DEBUG c.i.k.c.MetamodelConfiguration - Loading Entity Metadata...
09:27:53.048 [main] DEBUG c.i.k.v.rules.EntityAnnotationRule - Validating User
09:27:53.073 [main] DEBUG c.i.k.c.MetamodelConfiguration - Metadata not found in cache for User
09:27:53.087 [main] DEBUG c.i.kundera.metadata.MetadataBuilder - Processing @Entity >> class User
09:27:53.091 [main] DEBUG c.i.k.m.processor.TableProcessor - Processing @Entity(User) for Persistence Object.
09:27:53.142 [main] DEBUG c.i.k.m.processor.IndexProcessor - @Entity User will not be indexed for all columns
09:27:53.147 [main] INFO  c.i.k.c.ClientMetadataBuilder - Loading client factory for persistence unit cassandra_pu
09:27:53.148 [main] INFO  c.i.kundera.client.ClientResolver - Initializing client factory for: cassandra_pu
09:27:53.163 [main] INFO  c.i.kundera.client.ClientResolver - Finishing factory initialization
09:27:53.163 [main] INFO  c.i.k.configure.SchemaConfiguration - Configuring schema export for : cassandra_pu
09:27:53.216 [main] INFO  c.i.c.c.c.CassandraPropertyReader - Returning placement strategy value org.apache.cassandra.locator.SimpleStrategy
09:27:53.321 [main] ERROR c.i.c.c.s.CassandraSchemaManager - Error occurred while creating tableusers, Caused by: {}.
org
.apache.cassandra.thrift.InvalidRequestException: null
    at org
.apache.cassandra.thrift.Cassandra$execute_cql3_query_result$execute_cql3_query_resultStandardScheme.read(Cassandra.java:50297) ~[cassandra-thrift-2.1.3.jar:2.1.3]
    at org
.apache.cassandra.thrift.Cassandra$execute_cql3_query_result$execute_cql3_query_resultStandardScheme.read(Cassandra.java:50274) ~[cassandra-thrift-2.1.3.jar:2.1.3]
    at org
.apache.cassandra.thrift.Cassandra$execute_cql3_query_result.read(Cassandra.java:50189) ~[cassandra-thrift-2.1.3.jar:2.1.3]
    at org
.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78) ~[libthrift-0.9.2.jar:0.9.2]
    at org
.apache.cassandra.thrift.Cassandra$Client.recv_execute_cql3_query(Cassandra.java:1734) ~[cassandra-thrift-2.1.3.jar:2.1.3]
    at org
.apache.cassandra.thrift.Cassandra$Client.execute_cql3_query(Cassandra.java:1719) ~[cassandra-thrift-2.1.3.jar:2.1.3]
    at com
.impetus.client.cassandra.schemamanager.CassandraSchemaManager.createOrUpdateUsingCQL3(CassandraSchemaManager.java:814) [kundera-cassandra-3.1.jar:na]
    at com
.impetus.client.cassandra.schemamanager.CassandraSchemaManager.createColumnFamilies(CassandraSchemaManager.java:430) [kundera-cassandra-3.1.jar:na]
    at com
.impetus.client.cassandra.schemamanager.CassandraSchemaManager.createOrUpdateKeyspace(CassandraSchemaManager.java:279) [kundera-cassandra-3.1.jar:na]
    at com
.impetus.client.cassandra.schemamanager.CassandraSchemaManager.update(CassandraSchemaManager.java:627) [kundera-cassandra-3.1.jar:na]
    at com
.impetus.kundera.configure.schema.api.AbstractSchemaManager.handleOperations(AbstractSchemaManager.java:267) [kundera-core-3.1.jar:na]
    at com
.impetus.kundera.configure.schema.api.AbstractSchemaManager.exportSchema(AbstractSchemaManager.java:115) [kundera-core-3.1.jar:na]
    at com
.impetus.client.cassandra.schemamanager.CassandraSchemaManager.exportSchema(CassandraSchemaManager.java:166) [kundera-cassandra-3.1.jar:na]
    at com
.impetus.kundera.configure.SchemaConfiguration.configure(SchemaConfiguration.java:188) [kundera-core-3.1.jar:na]
    at com
.impetus.kundera.configure.ClientMetadataBuilder.buildClientFactoryMetadata(ClientMetadataBuilder.java:48) [kundera-core-3.1.jar:na]
    at com
.impetus.kundera.persistence.EntityManagerFactoryImpl.configureClientFactories(EntityManagerFactoryImpl.java:408) [kundera-core-3.1.jar:na]
    at com
.impetus.kundera.persistence.EntityManagerFactoryImpl.configure(EntityManagerFactoryImpl.java:161) [kundera-core-3.1.jar:na]
    at com
.impetus.kundera.persistence.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:135) [kundera-core-3.1.jar:na]
    at com
.impetus.kundera.KunderaPersistence.createEntityManagerFactory(KunderaPersistence.java:85) [kundera-core-3.1.jar:na]
    at javax
.persistence.Persistence.createEntityManagerFactory(Persistence.java:79) [javaee-api-7.0.jar:na]
    at javax
.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) [javaee-api-7.0.jar:na]
    at
KunderaExample.main(KunderaExample.java:26) [test-classes/:na]
09:27:53.322 [main] ERROR c.i.c.c.s.CassandraSchemaManager - Error occurred while creating KunderaExamples, Caused by: .
com
.impetus.kundera.configure.schema.SchemaGenerationException: Error occurred while creating table users
    at com
.impetus.client.cassandra.schemamanager.CassandraSchemaManager.updateExistingColumnFamily(CassandraSchemaManager.java:573) [kundera-cassandra-3.1.jar:na]
    at com
.impetus.client.cassandra.schemamanager.CassandraSchemaManager.createOrUpdateUsingCQL3(CassandraSchemaManager.java:820) [kundera-cassandra-3.1.jar:na]
    at com
.impetus.client.cassandra.schemamanager.CassandraSchemaManager.createColumnFamilies(CassandraSchemaManager.java:430) [kundera-cassandra-3.1.jar:na]
    at com
.impetus.client.cassandra.schemamanager.CassandraSchemaManager.createOrUpdateKeyspace(CassandraSchemaManager.java:279) [kundera-cassandra-3.1.jar:na]
    at com
.impetus.client.cassandra.schemamanager.CassandraSchemaManager.update(CassandraSchemaManager.java:627) [kundera-cassandra-3.1.jar:na]
    at com
.impetus.kundera.configure.schema.api.AbstractSchemaManager.handleOperations(AbstractSchemaManager.java:267) [kundera-core-3.1.jar:na]
    at com
.impetus.kundera.configure.schema.api.AbstractSchemaManager.exportSchema(AbstractSchemaManager.java:115) [kundera-core-3.1.jar:na]
    at com
.impetus.client.cassandra.schemamanager.CassandraSchemaManager.exportSchema(CassandraSchemaManager.java:166) [kundera-cassandra-3.1.jar:na]
    at com
.impetus.kundera.configure.SchemaConfiguration.configure(SchemaConfiguration.java:188) [kundera-core-3.1.jar:na]
    at com
.impetus.kundera.configure.ClientMetadataBuilder.buildClientFactoryMetadata(ClientMetadataBuilder.java:48) [kundera-core-3.1.jar:na]
    at com
.impetus.kundera.persistence.EntityManagerFactoryImpl.configureClientFactories(EntityManagerFactoryImpl.java:408) [kundera-core-3.1.jar:na]
    at com
.impetus.kundera.persistence.EntityManagerFactoryImpl.configure(EntityManagerFactoryImpl.java:161) [kundera-core-3.1.jar:na]
    at com
.impetus.kundera.persistence.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:135) [kundera-core-3.1.jar:na]
    at com
.impetus.kundera.KunderaPersistence.createEntityManagerFactory(KunderaPersistence.java:85) [kundera-core-3.1.jar:na]
    at javax
.persistence.Persistence.createEntityManagerFactory(Persistence.java:79) [javaee-api-7.0.jar:na]
    at javax
.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) [javaee-api-7.0.jar:na]
    at
KunderaExample.main(KunderaExample.java:26) [test-classes/:na]
Caused by: org.apache.cassandra.thrift.InvalidRequestException: null
    at org
.apache.cassandra.thrift.Cassandra$execute_cql3_query_result$execute_cql3_query_resultStandardScheme.read(Cassandra.java:50297) ~[cassandra-thrift-2.1.3.jar:2.1.3]
    at org
.apache.cassandra.thrift.Cassandra$execute_cql3_query_result$execute_cql3_query_resultStandardScheme.read(Cassandra.java:50274) ~[cassandra-thrift-2.1.3.jar:2.1.3]
    at org
.apache.cassandra.thrift.Cassandra$execute_cql3_query_result.read(Cassandra.java:50189) ~[cassandra-thrift-2.1.3.jar:2.1.3]
    at org
.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78) ~[libthrift-0.9.2.jar:0.9.2]
    at org
.apache.cassandra.thrift.Cassandra$Client.recv_execute_cql3_query(Cassandra.java:1734) ~[cassandra-thrift-2.1.3.jar:2.1.3]
    at org
.apache.cassandra.thrift.Cassandra$Client.execute_cql3_query(Cassandra.java:1719) ~[cassandra-thrift-2.1.3.jar:2.1.3]
    at com
.impetus.client.cassandra.schemamanager.CassandraSchemaManager.createOrUpdateUsingCQL3(CassandraSchemaManager.java:814) [kundera-cassandra-3.1.jar:na]
   
... 15 common frames omitted
Exception in thread "main" com.impetus.kundera.configure.schema.SchemaGenerationException: com.impetus.kundera.configure.schema.SchemaGenerationException: Error occurred while creating table users
    at com
.impetus.client.cassandra.schemamanager.CassandraSchemaManager.update(CassandraSchemaManager.java:632)
    at com
.impetus.kundera.configure.schema.api.AbstractSchemaManager.handleOperations(AbstractSchemaManager.java:267)
    at com
.impetus.kundera.configure.schema.api.AbstractSchemaManager.exportSchema(AbstractSchemaManager.java:115)
    at com
.impetus.client.cassandra.schemamanager.CassandraSchemaManager.exportSchema(CassandraSchemaManager.java:166)
    at com
.impetus.kundera.configure.SchemaConfiguration.configure(SchemaConfiguration.java:188)
    at com
.impetus.kundera.configure.ClientMetadataBuilder.buildClientFactoryMetadata(ClientMetadataBuilder.java:48)
    at com
.impetus.kundera.persistence.EntityManagerFactoryImpl.configureClientFactories(EntityManagerFactoryImpl.java:408)
    at com
.impetus.kundera.persistence.EntityManagerFactoryImpl.configure(EntityManagerFactoryImpl.java:161)
    at com
.impetus.kundera.persistence.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:135)
    at com
.impetus.kundera.KunderaPersistence.createEntityManagerFactory(KunderaPersistence.java:85)
    at javax
.persistence.Persistence.createEntityManagerFactory(Persistence.java:79)
    at javax
.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
    at
KunderaExample.main(KunderaExample.java:26)
Caused by: com.impetus.kundera.configure.schema.SchemaGenerationException: Error occurred while creating table users
    at com
.impetus.client.cassandra.schemamanager.CassandraSchemaManager.updateExistingColumnFamily(CassandraSchemaManager.java:573)
    at com
.impetus.client.cassandra.schemamanager.CassandraSchemaManager.createOrUpdateUsingCQL3(CassandraSchemaManager.java:820)
    at com
.impetus.client.cassandra.schemamanager.CassandraSchemaManager.createColumnFamilies(CassandraSchemaManager.java:430)
    at com
.impetus.client.cassandra.schemamanager.CassandraSchemaManager.createOrUpdateKeyspace(CassandraSchemaManager.java:279)
    at com
.impetus.client.cassandra.schemamanager.CassandraSchemaManager.update(CassandraSchemaManager.java:627)
   
... 12 more
Caused by: InvalidRequestException(why:Cannot add already existing table "users" to keyspace "KunderaExamples")
    at org
.apache.cassandra.thrift.Cassandra$execute_cql3_query_result$execute_cql3_query_resultStandardScheme.read(Cassandra.java:50297)
    at org
.apache.cassandra.thrift.Cassandra$execute_cql3_query_result$execute_cql3_query_resultStandardScheme.read(Cassandra.java:50274)
    at org
.apache.cassandra.thrift.Cassandra$execute_cql3_query_result.read(Cassandra.java:50189)
    at org
.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78)
    at org
.apache.cassandra.thrift.Cassandra$Client.recv_execute_cql3_query(Cassandra.java:1734)
    at org
.apache.cassandra.thrift.Cassandra$Client.execute_cql3_query(Cassandra.java:1719)
    at com
.impetus.client.cassandra.schemamanager.CassandraSchemaManager.createOrUpdateUsingCQL3(CassandraSchemaManager.java:814)
   
... 15 more


The first snippet is persistence.xml and the second one is the console log with exception stack. Why I'm getting this? It is not supposed to ignore the already created table? However if I change kundera.ddl.auto.prepare with validate it works.

Amit

unread,
Sep 25, 2015, 3:50:43 AM9/25/15
to kundera-discuss
Please share your entity definition for class User and also the list of the tables present in "KunderaExamples" keyspace.

-Amit

Giuseppe Alfieri

unread,
Sep 30, 2015, 4:57:35 AM9/30/15
to kundera-discuss
There is only the users table created by Kundera.

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "users", schema = "KunderaExamples@cassandra_pu")
public class User
{
   
@Id
   
private String userId;

   
@Column(name="first_name")
   
private String firstName;

   
@Column(name="last_name")
   
private String lastName;

   
@Column(name="city")
   
private String city;    

   
public User()
   
{
   
}

   
public String getUserId()
   
{
       
return userId;
   
}
   
public void setUserId(String userId)
   
{
       
this.userId = userId;
   
}
   
public String getFirstName()
   
{
       
return firstName;
   
}
   
public void setFirstName(String firstName)
   
{
       
this.firstName = firstName;
   
}
   
public String getLastName()
   
{
       
return lastName;
   
}
   
public void setLastName(String lastName)
   
{
       
this.lastName = lastName;
   
}
   
public String getCity()
   
{
       
return city;
   
}
   
public void setCity(String city)
   
{
       
this.city = city;
   
}
}
...

Giuseppe Alfieri

unread,
Oct 5, 2015, 5:35:39 AM10/5/15
to kundera-discuss
Any update??


Il giorno giovedì 24 settembre 2015 09:38:25 UTC+2, Giuseppe Alfieri ha scritto:
...

Chhavi Gangwal

unread,
Oct 6, 2015, 2:13:03 AM10/6/15
to kundera-discuss
  Well the entity looks neat and it shouldn't happen, we tested the same at our end. Possible to share a sample app or code where I can reproduce the error?

Chhavi

Giuseppe Alfieri

unread,
Oct 6, 2015, 8:23:08 AM10/6/15
to kundera-discuss
This is the eclipse exported archive.

http://helpis.it/tribe.zip

Chhavi Gangwal

unread,
Oct 7, 2015, 1:37:23 AM10/7/15
to kundera-discuss
Hi Giuseppe,

Two this first comment cassandra core's 2.1.7's dependency in your project as Kundera internally uses 2.1.3 and this version might lead to some conflict.

<!--         <dependency> -->
<!--             <groupId>com.datastax.cassandra</groupId> -->
<!--             <artifactId>cassandra-driver-core</artifactId> -->
<!--             <version>2.1.7</version> -->
<!--         </dependency> -->

Secondly, if its just a sample project I would suggest you drop the keyspace KunderaExamples or create a new one and and try running the test in update mode itself. It seems that the earlier "users" table present was created via CQL2 whereas DSClient runs over CQL3. This version difference is leading to discrepancies and throwing error.


Hope that Helps,
Chhavi
Reply all
Reply to author
Forward
0 new messages