You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ignite.apache.org by Riccardo Iacomini <ri...@rdslab.com> on 2017/06/26 13:20:00 UTC

Configuring SQL queries - ClassNotFoundException: Unknown pair

Hello,
I am trying to configure a cache with String key and a custom java class as
value to be accessed using the ODBC driver. I tried configuring the SQL
schema with both the annotation-based and the query entity approach,
however I get a *java.lang.ClassNotFoundException: Unknown pair
[platformId=0, typeId=-901099322] *when I try to put some data in.

Here's the full exception I get:


> *SEVERE: Failed to execute SQL query [reqId=4, req=OdbcQueryExecuteRequest
> [cacheName=cloak, sqlQry=INSERT INTO cloakleft (_key, leftyear, leftmonth)
> VALUES ('testkey', 10, 10), args=[]]]*
> *javax.cache.CacheException: class
> org.apache.ignite.internal.processors.query.IgniteSQLException: Failed to
> execute DML statement [stmt=INSERT INTO cloakleft (_key, leftyear,
> leftmonth) VALUES ('testkey', 10, 10), params=[]]*
> * at
> org.apache.ignite.internal.processors.cache.IgniteCacheProxy.query(IgniteCacheProxy.java:818)*
> * at
> org.apache.ignite.internal.processors.odbc.OdbcRequestHandler.executeQuery(OdbcRequestHandler.java:213)*
> * at
> org.apache.ignite.internal.processors.odbc.OdbcRequestHandler.handle(OdbcRequestHandler.java:108)*
> * at
> org.apache.ignite.internal.processors.odbc.OdbcNioListener.onMessage(OdbcNioListener.java:124)*
> * at
> org.apache.ignite.internal.processors.odbc.OdbcNioListener.onMessage(OdbcNioListener.java:33)*
> * at
> org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:279)*
> * at
> org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109)*
> * at
> org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter$3.body(GridNioAsyncNotifyFilter.java:97)*
> * at
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:110)*
> * at
> org.apache.ignite.internal.util.worker.GridWorkerPool$1.run(GridWorkerPool.java:70)*
> * at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)*
> * at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)*
> * at java.lang.Thread.run(Thread.java:748)*
> *Caused by: class
> org.apache.ignite.internal.processors.query.IgniteSQLException: Failed to
> execute DML statement [stmt=INSERT INTO cloakleft (_key, leftyear,
> leftmonth) VALUES ('testkey', 10, 10), params=[]]*
> * at
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.queryTwoStep(IgniteH2Indexing.java:1662)*
> * at
> org.apache.ignite.internal.processors.query.GridQueryProcessor$4.applyx(GridQueryProcessor.java:1659)*
> * at
> org.apache.ignite.internal.processors.query.GridQueryProcessor$4.applyx(GridQueryProcessor.java:1657)*
> * at
> org.apache.ignite.internal.util.lang.IgniteOutClosureX.apply(IgniteOutClosureX.java:36)*
> * at
> org.apache.ignite.internal.processors.query.GridQueryProcessor.executeQuery(GridQueryProcessor.java:2103)*
> * at
> org.apache.ignite.internal.processors.query.GridQueryProcessor.queryTwoStep(GridQueryProcessor.java:1657)*
> * at
> org.apache.ignite.internal.processors.cache.IgniteCacheProxy.query(IgniteCacheProxy.java:806)*
> * ... 12 more*
> *Caused by: class
> org.apache.ignite.internal.processors.cache.CachePartialUpdateCheckedException:
> Failed to update keys (retry update if possible).: [testkey]*
> * at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture.onPrimaryError(GridNearAtomicAbstractUpdateFuture.java:397)*
> * at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture.onPrimaryResponse(GridNearAtomicSingleUpdateFuture.java:250)*
> * at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture$1.apply(GridNearAtomicAbstractUpdateFuture.java:303)*
> * at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture$1.apply(GridNearAtomicAbstractUpdateFuture.java:300)*
> * at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1885)*
> * at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1630)*
> * at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture.sendSingleRequest(GridNearAtomicAbstractUpdateFuture.java:299)*
> * at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture.map(GridNearAtomicSingleUpdateFuture.java:480)*
> * at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture.mapOnTopology(GridNearAtomicSingleUpdateFuture.java:440)*
> * at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture.map(GridNearAtomicAbstractUpdateFuture.java:248)*
> * at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update0(GridDhtAtomicCache.java:1162)*
> * at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.put0(GridDhtAtomicCache.java:651)*
> * at
> org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:2345)*
> * at
> org.apache.ignite.internal.processors.cache.GridCacheAdapter.putIfAbsent(GridCacheAdapter.java:2720)*
> * at
> org.apache.ignite.internal.processors.query.h2.DmlStatementsProcessor.doInsert(DmlStatementsProcessor.java:829)*
> * at
> org.apache.ignite.internal.processors.query.h2.DmlStatementsProcessor.executeUpdateStatement(DmlStatementsProcessor.java:369)*
> * at
> org.apache.ignite.internal.processors.query.h2.DmlStatementsProcessor.updateSqlFields(DmlStatementsProcessor.java:164)*
> * at
> org.apache.ignite.internal.processors.query.h2.DmlStatementsProcessor.updateSqlFieldsTwoStep(DmlStatementsProcessor.java:198)*
> * at
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.queryTwoStep(IgniteH2Indexing.java:1659)*
> * ... 18 more*
> * Suppressed: class org.apache.ignite.IgniteCheckedException: Failed to
> update keys on primary node.*
> * at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.UpdateErrors.addFailedKeys(UpdateErrors.java:124)*
> * at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicUpdateResponse.addFailedKeys(GridNearAtomicUpdateResponse.java:342)*
> * at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1883)*
> * ... 32 more*
> * Suppressed: class org.apache.ignite.IgniteException: Runtime failure on
> search row:
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$SearchRow@4a23cae0*
> * at
> org.apache.ignite.internal.processors.cache.database.tree.BPlusTree.invoke(BPlusTree.java:1615)*
> * at
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke(IgniteCacheOffheapManagerImpl.java:925)*
> * at
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.invoke(IgniteCacheOffheapManagerImpl.java:326)*
> * at
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:1693)*
> * at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2386)*
> * at
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1792)*
> * ... 32 more*
> * Caused by: class org.apache.ignite.binary.BinaryInvalidTypeException:
> Unknown pair [platformId=0, typeId=-901099322]*
> * at
> org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:701)*
> * at
> org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1745)*
> * at
> org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1704)*
> * at
> org.apache.ignite.internal.binary.BinaryObjectImpl.deserializeValue(BinaryObjectImpl.java:794)*
> * at
> org.apache.ignite.internal.binary.BinaryObjectImpl.value(BinaryObjectImpl.java:142)*
> * at
> org.apache.ignite.internal.processors.cache.CacheObjectContext.unwrapBinary(CacheObjectContext.java:273)*
> * at
> org.apache.ignite.internal.processors.cache.CacheObjectContext.unwrapBinaryIfNeeded(CacheObjectContext.java:161)*
> * at
> org.apache.ignite.internal.processors.cache.CacheObjectContext.unwrapBinaryIfNeeded(CacheObjectContext.java:148)*
> * at
> org.apache.ignite.internal.processors.cache.GridCacheContext.unwrapBinaryIfNeeded(GridCacheContext.java:1730)*
> * at
> org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter.put(GridCacheStoreManagerAdapter.java:555)*
> * at
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.update(GridCacheMapEntry.java:4404)*
> * at
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:4226)*
> * at
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:3966)*
> * at
> org.apache.ignite.internal.processors.cache.database.tree.BPlusTree$Invoke.invokeClosure(BPlusTree.java:2966)*
> * at
> org.apache.ignite.internal.processors.cache.database.tree.BPlusTree$Invoke.access$6200(BPlusTree.java:2860)*
> * at
> org.apache.ignite.internal.processors.cache.database.tree.BPlusTree.invokeDown(BPlusTree.java:1696)*
> * at
> org.apache.ignite.internal.processors.cache.database.tree.BPlusTree.invoke(BPlusTree.java:1585)*
> * ... 37 more*
> * Caused by: java.lang.ClassNotFoundException: Unknown pair [platformId=0,
> typeId=-901099322]*
> * at
> org.apache.ignite.internal.MarshallerContextImpl.getClassName(MarshallerContextImpl.java:385)*
> * at
> org.apache.ignite.internal.MarshallerContextImpl.getClass(MarshallerContextImpl.java:335)*
> * at
> org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:692)**
> ... 53 more*



Here's my Ignite configuration:


IgniteConfiguration cfg = new IgniteConfiguration();
> CacheConfiguration<String, CloakLeft> configuration = new
> CacheConfiguration();
>
> // Setting Cassandra's data source and persistence settings
> DataSource dataSource = new DataSource();
> dataSource.setContactPoints("172.17.0.2");
> RoundRobinPolicy robinPolicy = new RoundRobinPolicy();
> dataSource.setLoadBalancingPolicy(robinPolicy);
>
> dataSource.setReadConsistency("QUORUM");
> dataSource.setWriteConsistency("QUORUM");
>
> String persistenceSettingsXml = FileUtils.readFileToString(new File(
> persistenceSettingsConfig), "utf-8");
> KeyValuePersistenceSettings persistenceSettings = new
> KeyValuePersistenceSettings(persistenceSettingsXml);
>
> int maxPoolSize = 100;
> CassandraCacheStoreFactory cacheStoreFactory = new
> CassandraCacheStoreFactory();
>
> cacheStoreFactory.setDataSource(dataSource);
> cacheStoreFactory.setPersistenceSettings(persistenceSettings);
>
> // Configuring Ignite cache "cloak"
> configuration.setName("cloak");
> configuration.setCacheStoreFactory(cacheStoreFactory);
> configuration.setWriteThrough(true);
> configuration.setReadThrough(true);
> configuration.setWriteBehindEnabled(true);
>
> // Setting cache types
> configuration.setTypes(String.class, CloakLeft.class);
>
> // Setting and enabling SQL queries
> //configuration.setIndexedTypes(String.class, CloakLeft.class);
> // Configuring fields
> LinkedHashMap<String, String> fields = new LinkedHashMap<String, String>()
> ;
> fields.put("leftmonth", "java.lang.Integer");
> fields.put("leftyear", "java.lang.Integer");
> QueryEntity qe = new QueryEntity("java.lang.String",
> "com.rdslab.cloak.data.CloakLeft");
> qe.setTableName("cloakleft");
> qe.setFields(fields);
> HashSet<QueryEntity> queryEntities = new HashSet<QueryEntity>();
> queryEntities.add(qe);
> configuration.setQueryEntities(queryEntities);
>
> cfg.setCacheConfiguration(configuration);
>
> // Configuring ODBC
> OdbcConfiguration odbcConfig = new OdbcConfiguration();
> odbcConfig.setMaxOpenCursors(100);
> cfg.setOdbcConfiguration(odbcConfig);
>
> // Starting Ignite
> Ignite ignite = Ignition.start(cfg);


That's the value type class (I've removed the annotations when trying to
configure the fields using the query entity approach):


> public class CloakLeft implements Serializable {
> @QuerySqlField
> private String username;
>
> @QuerySqlField
> private int leftMonth;
>
> @QuerySqlField
> private int leftYear;
>
> public String getUsername(){ return username; }
> public int getLeftMonth(){ return leftMonth;}
> public int getLeftYear(){ return leftYear; }
> public void setUsername(String value){
> username = value;
> }
> public void setLeftMonth(int value){
> leftMonth = value;
> }
> public void setLeftYear(int value){
> leftYear = value;
> }
> }


Any indication to solve the issue is really appreciated.

Best

Riccardo Iacomini


*RDSLab*

Re: Configuring SQL queries - ClassNotFoundException: Unknown pair

Posted by Riccardo Iacomini <ri...@rdslab.com>.
Thank you, I am going to answer in the S.O. question.

Best

Riccardo Iacomini


*RDSLab*

On Wed, Jun 28, 2017 at 5:21 PM, ezhuravlev <e....@gmail.com>
wrote:

> Hello,
>
> This question was already answered on SO:
> https://stackoverflow.com/questions/44781672/apache-ignite-java-lang-
> classnotfoundexception-unknown-pair/44806263#44806263
>
> Evgenii
>
>
>
> --
> View this message in context: http://apache-ignite-users.
> 70518.x6.nabble.com/Configuring-SQL-queries-ClassNotFoundException-
> Unknown-pair-tp14082p14142.html
> Sent from the Apache Ignite Users mailing list archive at Nabble.com.
>

Re: Configuring SQL queries - ClassNotFoundException: Unknown pair

Posted by ezhuravlev <e....@gmail.com>.
Hello,

This question was already answered on SO:
https://stackoverflow.com/questions/44781672/apache-ignite-java-lang-classnotfoundexception-unknown-pair/44806263#44806263

Evgenii



--
View this message in context: http://apache-ignite-users.70518.x6.nabble.com/Configuring-SQL-queries-ClassNotFoundException-Unknown-pair-tp14082p14142.html
Sent from the Apache Ignite Users mailing list archive at Nabble.com.