Hello,

there seems to be a problem with mapping between Cassandra numerical types to 
Java types. I am using ver. 2.0.0#20170430-sha1:d4eef3c6.

In Cassandra, the column is defined as "smallint".
In the Java POJO, the field is defined as "Short"
In the configuration (QueryEntity), the field is defined as "java.lang.Short".
Nothing was defined as java.lang.Integer.

Loading an object from Cassandra to Ignite (get with cache-miss, or 
loadCache()) resulted in the following exception:
com.datastax.driver.core.exceptions.CodecNotFoundException: Codec not found for 
requested operation: [smallint <-> java.lang.Integer]

It seems that the type defined on the Ignite side is not properly propagated to 
the Cassandra driver, and Cassandra perceives it as an Integer.

When I define everything (column and all fields) as int/java.lang.Integer, then 
all is well.

I also tried with "tinyint" and java.lang.Byte. In this case the Java driver 
tried (and failed) to map to java.nio.ByteBuffer.

Caused by: com.datastax.driver.core.exceptions.CodecNotFoundException: Codec 
not found for requested operation: [smallint <-> java.lang.Integer]
        at 
com.datastax.driver.core.CodecRegistry.notFound(CodecRegistry.java:679)
        at 
com.datastax.driver.core.CodecRegistry.createCodec(CodecRegistry.java:526)
        at 
com.datastax.driver.core.CodecRegistry.findCodec(CodecRegistry.java:506)
        at 
com.datastax.driver.core.CodecRegistry.access$200(CodecRegistry.java:140)
        at 
com.datastax.driver.core.CodecRegistry$TypeCodecCacheLoader.load(CodecRegistry.java:211)
        at 
com.datastax.driver.core.CodecRegistry$TypeCodecCacheLoader.load(CodecRegistry.java:208)
        at 
com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3542)
        at 
com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2323)
        at 
com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2286)
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201)
        at com.google.common.cache.LocalCache.get(LocalCache.java:3953)
        at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3957)
        at 
com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4875)
        at 
com.datastax.driver.core.CodecRegistry.lookupCodec(CodecRegistry.java:480)
        at 
com.datastax.driver.core.CodecRegistry.codecFor(CodecRegistry.java:448)
        at 
com.datastax.driver.core.CodecRegistry.codecFor(CodecRegistry.java:430)
        at 
com.datastax.driver.core.AbstractGettableByIndexData.codecFor(AbstractGettableByIndexData.java:69)
        at 
com.datastax.driver.core.AbstractGettableByIndexData.getInt(AbstractGettableByIndexData.java:139)
        at 
com.datastax.driver.core.AbstractGettableData.getInt(AbstractGettableData.java:26)
        at 
com.datastax.driver.core.AbstractGettableData.getInt(AbstractGettableData.java:87)
        at 
org.apache.ignite.cache.store.cassandra.common.PropertyMappingHelper.getCassandraColumnValue(PropertyMappingHelper.java:157)
        at 
org.apache.ignite.cache.store.cassandra.persistence.PojoField.setValueFromRow(PojoField.java:181)
        at 
org.apache.ignite.cache.store.cassandra.persistence.PersistenceController.buildObject(PersistenceController.java:406)
        at 
org.apache.ignite.cache.store.cassandra.persistence.PersistenceController.buildValueObject(PersistenceController.java:228)
        at 
org.apache.ignite.cache.store.cassandra.CassandraCacheStore$1.process(CassandraCacheStore.java:201)
        at 
org.apache.ignite.cache.store.cassandra.session.CassandraSessionImpl.execute(CassandraSessionImpl.java:148)
        ... 14 more


Roger

Reply via email to