[ 
https://issues.apache.org/jira/browse/IGNITE-569?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14484831#comment-14484831
 ] 

Dmitriy Setrakyan commented on IGNITE-569:
------------------------------------------

We should also check that there are even number of types provided in 
{{setIndexedType}} method.

> Exception with informative message should be thrown in case type registered 
> in types metadata and indexed types
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-569
>                 URL: https://issues.apache.org/jira/browse/IGNITE-569
>             Project: Ignite
>          Issue Type: Bug
>    Affects Versions: sprint-2
>            Reporter: Alexey Kuznetsov
>            Assignee: Sergi Vladykin
>             Fix For: sprint-3
>
>
> If user by mistake configure same type twice: first in type metadata and 
> second in indexed types not very informative exception will be thrown.
> Need to show message with informative message about exception reason.
> {code}
> [22:24:36,574][ERROR][main][IgniteKernal] Got exception while starting (will 
> rollback startup routine).
> class org.apache.ignite.IgniteCheckedException: Failed to register query 
> type: TypeDescriptor [ccfg=CacheConfiguration [name=Person, 
> rebalancePoolSize=2, rebalanceTimeout=10000, ttl=0, evictPlc=null, 
> evictSync=false, evictKeyBufSize=1024, evictSyncConcurrencyLvl=4, 
> evictSyncTimeout=10000, evictFilter=null, evictMaxOverflowRatio=10.0, 
> eagerTtl=true, dfltLockTimeout=0, startSize=1500000, nearCfg=null, 
> writeSync=PRIMARY_SYNC, 
> storeFactory=org.apache.ignite.schema.Demo$H2DemoStoreFactory@48f2ed4a, 
> loadPrevVal=false, 
> aff=org.apache.ignite.cache.affinity.rendezvous.CacheRendezvousAffinityFunction@72b76539,
>  cacheMode=PARTITIONED, atomicityMode=ATOMIC, atomicWriteOrderMode=PRIMARY, 
> backups=0, invalidate=false, tmLookupClsName=null, rebalanceMode=ASYNC, 
> rebalanceOrder=0, rebalanceBatchSize=524288, offHeapMaxMem=-1, 
> swapEnabled=false, maxConcurrentAsyncOps=500, writeBehindEnabled=false, 
> writeBehindFlushSize=10240, writeBehindFlushFreq=5000, 
> writeBehindFlushThreadCnt=1, writeBehindBatchSize=512, memMode=ONHEAP_TIERED, 
> affMapper=org.apache.ignite.internal.processors.cache.GridCacheDefaultAffinityKeyMapper@6656bc05,
>  rebalanceDelay=0, rebalanceThrottle=0, interceptor=null, 
> longQryWarnTimeout=3000, readFromBackup=true, 
> nodeFilter=org.apache.ignite.configuration.CacheConfiguration$1@485220c0, 
> sqlEscapeAll=false, sqlOnheapRowCacheSize=10240, cpOnRead=true], name=Person, 
> fields={Id=int, FirstName=class java.lang.String, LastName=class 
> java.lang.String, Salary=double}, indexes={Id_idx=IndexDescriptor 
> [type=SORTED]}, fullTextIdx=null, keyCls=class 
> org.apache.ignite.schema.PersonKey, valCls=class 
> org.apache.ignite.schema.Person, valTextIdx=false, registered=false]
>       at 
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.registerType(IgniteH2Indexing.java:877)
>       at 
> org.apache.ignite.internal.processors.query.GridQueryProcessor.initializeCache(GridQueryProcessor.java:146)
>       at 
> org.apache.ignite.internal.processors.query.GridQueryProcessor.onCacheStart(GridQueryProcessor.java:218)
>       at 
> org.apache.ignite.internal.processors.cache.GridCacheProcessor.startCache(GridCacheProcessor.java:807)
>       at 
> org.apache.ignite.internal.processors.cache.GridCacheProcessor.onKernalStart(GridCacheProcessor.java:674)
>       at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:813)
>       at 
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1435)
>       at 
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1303)
>       at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:882)
>       at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:481)
>       at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:462)
>       at org.apache.ignite.Ignition.start(Ignition.java:306)
>       at org.apache.ignite.schema.Demo.main(Demo.java:72)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:606)
>       at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
> Caused by: org.h2.jdbc.JdbcSQLException: Таблица "PERSON" уже существует
> Table "PERSON" already exists; SQL statement:
> CREATE TABLE "Person".Person (_key OTHER NOT NULL,_val OTHER,Id INT,FirstName 
> VARCHAR,LastName VARCHAR,Salary DOUBLE) engine 
> "org.apache.ignite.internal.processors.query.h2.opt.GridH2Table$Engine" 
> [42101-175]
>       at org.h2.message.DbException.getJdbcSQLException(DbException.java:332)
>       at org.h2.message.DbException.get(DbException.java:172)
>       at org.h2.message.DbException.get(DbException.java:149)
>       at org.h2.command.ddl.CreateTable.update(CreateTable.java:109)
>       at org.h2.command.CommandContainer.update(CommandContainer.java:79)
>       at org.h2.command.Command.executeUpdate(Command.java:253)
>       at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:181)
>       at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:156)
>       at 
> org.apache.ignite.internal.processors.query.h2.opt.GridH2Table$Engine.createTable(GridH2Table.java:614)
>       at 
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.createTable(IgniteH2Indexing.java:986)
>       at 
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.registerType(IgniteH2Indexing.java:870)
>       ... 17 more
> [22:24:36,580][ERROR][main][IgniteKernal] Failed to pre-stop processor: 
> GridProcessorAdapter []
> java.lang.NullPointerException
>       at 
> org.apache.ignite.internal.processors.cache.GridCacheEventManager.isRecordable(GridCacheEventManager.java:342)
>       at 
> org.apache.ignite.internal.processors.cache.GridCacheProcessor.onKernalStop(GridCacheProcessor.java:968)
>       at 
> org.apache.ignite.internal.processors.cache.GridCacheProcessor.onKernalStop(GridCacheProcessor.java:781)
>       at org.apache.ignite.internal.IgniteKernal.stop0(IgniteKernal.java:1712)
>       at org.apache.ignite.internal.IgniteKernal.stop(IgniteKernal.java:1665)
>       at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:836)
>       at 
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1435)
>       at 
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1303)
>       at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:882)
>       at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:481)
>       at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:462)
>       at org.apache.ignite.Ignition.start(Ignition.java:306)
>       at org.apache.ignite.schema.Demo.main(Demo.java:72)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:606)
>       at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
> [22:24:36] Ignite node stopped wih ERRORS [uptime=00:00:04:416]
> Exception in thread "main" class org.apache.ignite.IgniteException: Failed to 
> register query type: TypeDescriptor [ccfg=CacheConfiguration [name=Person, 
> rebalancePoolSize=2, rebalanceTimeout=10000, ttl=0, evictPlc=null, 
> evictSync=false, evictKeyBufSize=1024, evictSyncConcurrencyLvl=4, 
> evictSyncTimeout=10000, evictFilter=null, evictMaxOverflowRatio=10.0, 
> eagerTtl=true, dfltLockTimeout=0, startSize=1500000, nearCfg=null, 
> writeSync=PRIMARY_SYNC, 
> storeFactory=org.apache.ignite.schema.Demo$H2DemoStoreFactory@48f2ed4a, 
> loadPrevVal=false, 
> aff=org.apache.ignite.cache.affinity.rendezvous.CacheRendezvousAffinityFunction@72b76539,
>  cacheMode=PARTITIONED, atomicityMode=ATOMIC, atomicWriteOrderMode=PRIMARY, 
> backups=0, invalidate=false, tmLookupClsName=null, rebalanceMode=ASYNC, 
> rebalanceOrder=0, rebalanceBatchSize=524288, offHeapMaxMem=-1, 
> swapEnabled=false, maxConcurrentAsyncOps=500, writeBehindEnabled=false, 
> writeBehindFlushSize=10240, writeBehindFlushFreq=5000, 
> writeBehindFlushThreadCnt=1, writeBehindBatchSize=512, memMode=ONHEAP_TIERED, 
> affMapper=org.apache.ignite.internal.processors.cache.GridCacheDefaultAffinityKeyMapper@6656bc05,
>  rebalanceDelay=0, rebalanceThrottle=0, interceptor=null, 
> longQryWarnTimeout=3000, readFromBackup=true, 
> nodeFilter=org.apache.ignite.configuration.CacheConfiguration$1@485220c0, 
> sqlEscapeAll=false, sqlOnheapRowCacheSize=10240, cpOnRead=true], name=Person, 
> fields={Id=int, FirstName=class java.lang.String, LastName=class 
> java.lang.String, Salary=double}, indexes={Id_idx=IndexDescriptor 
> [type=SORTED]}, fullTextIdx=null, keyCls=class 
> org.apache.ignite.schema.PersonKey, valCls=class 
> org.apache.ignite.schema.Person, valTextIdx=false, registered=false]
>       at 
> org.apache.ignite.internal.util.IgniteUtils.convertException(IgniteUtils.java:660)
>       at org.apache.ignite.Ignition.start(Ignition.java:309)
>       at org.apache.ignite.schema.Demo.main(Demo.java:72)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:606)
>       at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
> Caused by: class org.apache.ignite.IgniteCheckedException: Failed to register 
> query type: TypeDescriptor [ccfg=CacheConfiguration [name=Person, 
> rebalancePoolSize=2, rebalanceTimeout=10000, ttl=0, evictPlc=null, 
> evictSync=false, evictKeyBufSize=1024, evictSyncConcurrencyLvl=4, 
> evictSyncTimeout=10000, evictFilter=null, evictMaxOverflowRatio=10.0, 
> eagerTtl=true, dfltLockTimeout=0, startSize=1500000, nearCfg=null, 
> writeSync=PRIMARY_SYNC, 
> storeFactory=org.apache.ignite.schema.Demo$H2DemoStoreFactory@48f2ed4a, 
> loadPrevVal=false, 
> aff=org.apache.ignite.cache.affinity.rendezvous.CacheRendezvousAffinityFunction@72b76539,
>  cacheMode=PARTITIONED, atomicityMode=ATOMIC, atomicWriteOrderMode=PRIMARY, 
> backups=0, invalidate=false, tmLookupClsName=null, rebalanceMode=ASYNC, 
> rebalanceOrder=0, rebalanceBatchSize=524288, offHeapMaxMem=-1, 
> swapEnabled=false, maxConcurrentAsyncOps=500, writeBehindEnabled=false, 
> writeBehindFlushSize=10240, writeBehindFlushFreq=5000, 
> writeBehindFlushThreadCnt=1, writeBehindBatchSize=512, memMode=ONHEAP_TIERED, 
> affMapper=org.apache.ignite.internal.processors.cache.GridCacheDefaultAffinityKeyMapper@6656bc05,
>  rebalanceDelay=0, rebalanceThrottle=0, interceptor=null, 
> longQryWarnTimeout=3000, readFromBackup=true, 
> nodeFilter=org.apache.ignite.configuration.CacheConfiguration$1@485220c0, 
> sqlEscapeAll=false, sqlOnheapRowCacheSize=10240, cpOnRead=true], name=Person, 
> fields={Id=int, FirstName=class java.lang.String, LastName=class 
> java.lang.String, Salary=double}, indexes={Id_idx=IndexDescriptor 
> [type=SORTED]}, fullTextIdx=null, keyCls=class 
> org.apache.ignite.schema.PersonKey, valCls=class 
> org.apache.ignite.schema.Person, valTextIdx=false, registered=false]
>       at 
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.registerType(IgniteH2Indexing.java:877)
>       at 
> org.apache.ignite.internal.processors.query.GridQueryProcessor.initializeCache(GridQueryProcessor.java:146)
>       at 
> org.apache.ignite.internal.processors.query.GridQueryProcessor.onCacheStart(GridQueryProcessor.java:218)
>       at 
> org.apache.ignite.internal.processors.cache.GridCacheProcessor.startCache(GridCacheProcessor.java:807)
>       at 
> org.apache.ignite.internal.processors.cache.GridCacheProcessor.onKernalStart(GridCacheProcessor.java:674)
>       at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:813)
>       at 
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1435)
>       at 
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1303)
>       at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:882)
>       at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:481)
>       at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:462)
>       at org.apache.ignite.Ignition.start(Ignition.java:306)
>       ... 6 more
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to