You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ignite.apache.org by ihalilaltun <ib...@segmentify.com> on 2021/05/07 14:48:13 UTC

ignite 2.10 index type change

Hello igniters,

We've recently upgraded from ignite 2.7.6 to 2.10. With the cluster start
we've seen that all indexes are rebuilded which went very well -> no data
loss :)

After upgrade we've run some tests and encountered following problem; we've
following parameter in one of our objects

    @QuerySqlField(index = true, descending = true)
    protected Timestamp lastUpdateTime;

but this parameter is persisted as followings;
write -> binaryWriter.writeDate("lastUpdateTime", lastUpdateTime != null ?
new Date(lastUpdateTime.getTime()) : null);
read -> Date h = binaryReader.readDate("lastUpdateTime");
            lastUpdateTime = (h != null) ? new Timestamp(h.getTime()) :
null;

so after upgrade operation we're getting following error, my question here
is the following: can i somehow update the parameter to Date and update all
the indexes on the cluster without any data loss? Any help appriciated.

javax.cache.processor.EntryProcessorException: class
org.apache.ignite.IgniteCheckedException: Type for a column 'lastUpdateTime'
is not compatible with index definition. Expected 'Timestamp', actual type
'Date'
	at
org.apache.ignite.internal.processors.cache.CacheInvokeResult.get(CacheInvokeResult.java:108)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.invoke(IgniteCacheProxyImpl.java:1715)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.invoke(IgniteCacheProxyImpl.java:1759)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.invoke(GatewayProtectedCacheProxy.java:1264)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
com.segmentify.lotr.gimli.model.push.LastVisitReminderCampaign.runPrioritized(LastVisitReminderCampaign.java:180)
~[classes!/:0.0.1-SNAPSHOT]
	at
com.segmentify.lotr.gimli.campaign.PushManager.executePrioritizedCamps(PushManager.java:264)
~[classes!/:0.0.1-SNAPSHOT]
	at
com.segmentify.lotr.gimli.campaign.PushManager.lambda$executeCampaigns$1(PushManager.java:146)
~[classes!/:0.0.1-SNAPSHOT]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[?:1.8.0_261]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_261]
	at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[?:1.8.0_261]
	at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[?:1.8.0_261]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_261]
Caused by: org.apache.ignite.IgniteCheckedException: Type for a column
'lastUpdateTime' is not compatible with index definition. Expected
'Timestamp', actual type 'Date'
	at org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:7587)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.GridCacheContext.validateKeyAndValue(GridCacheContext.java:1916)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:6204)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:5923)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.invokeClosure(BPlusTree.java:4019)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.access$5700(BPlusTree.java:3913)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invokeDown(BPlusTree.java:2042)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invokeDown(BPlusTree.java:2013)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invoke(BPlusTree.java:1920)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke0(IgniteCacheOffheapManagerImpl.java:1758)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke(IgniteCacheOffheapManagerImpl.java:1741)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.invoke(GridCacheOffheapManager.java:2766)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.invoke(IgniteCacheOffheapManagerImpl.java:439)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2338)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2654)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update(GridDhtAtomicCache.java:2114)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1931)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1724)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processNearAtomicUpdateRequest(GridDhtAtomicCache.java:3293)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$400(GridDhtAtomicCache.java:146)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:287)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:282)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:1142)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:591)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:392)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:318)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.access$100(GridCacheIoManager.java:109)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:308)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1908)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1529)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.managers.communication.GridIoManager.access$5300(GridIoManager.java:242)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.managers.communication.GridIoManager$9.execute(GridIoManager.java:1422)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.managers.communication.TraceRunnable.run(TraceRunnable.java:55)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.util.StripedExecutor$Stripe.body(StripedExecutor.java:569)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
~[ignite-core-2.10.0.jar!/:2.10.0]
	... 1 more
Caused by: org.apache.ignite.internal.processors.query.IgniteSQLException:
Type for a column 'lastUpdateTime' is not compatible with index definition.
Expected 'Timestamp', actual type 'Date'
	at
org.apache.ignite.internal.processors.query.QueryTypeDescriptorImpl.validateIndexes(QueryTypeDescriptorImpl.java:714)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.query.QueryTypeDescriptorImpl.validateKeyAndValue(QueryTypeDescriptorImpl.java:589)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.query.GridQueryProcessor.validateKeyAndValue(GridQueryProcessor.java:3582)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.GridCacheContext.validateKeyAndValue(GridCacheContext.java:1913)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:6204)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:5923)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.invokeClosure(BPlusTree.java:4019)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.access$5700(BPlusTree.java:3913)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invokeDown(BPlusTree.java:2042)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invokeDown(BPlusTree.java:2013)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invoke(BPlusTree.java:1920)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke0(IgniteCacheOffheapManagerImpl.java:1758)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke(IgniteCacheOffheapManagerImpl.java:1741)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.invoke(GridCacheOffheapManager.java:2766)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.invoke(IgniteCacheOffheapManagerImpl.java:439)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2338)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2654)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update(GridDhtAtomicCache.java:2114)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1931)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1724)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processNearAtomicUpdateRequest(GridDhtAtomicCache.java:3293)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$400(GridDhtAtomicCache.java:146)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:287)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:282)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:1142)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:591)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:392)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:318)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.access$100(GridCacheIoManager.java:109)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:308)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1908)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1529)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.managers.communication.GridIoManager.access$5300(GridIoManager.java:242)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.managers.communication.GridIoManager$9.execute(GridIoManager.java:1422)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.managers.communication.TraceRunnable.run(TraceRunnable.java:55)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.util.StripedExecutor$Stripe.body(StripedExecutor.java:569)
~[ignite-core-2.10.0.jar!/:2.10.0]
	at
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
~[ignite-core-2.10.0.jar!/:2.10.0]


Thanks for all your help and contributions, please keep what you are doing
:) looking forward to see v3.0.0 relase



-----
İbrahim Halil Altun
Senior Software Engineer @ Segmentify
--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/

Re: ignite 2.10 index type change

Posted by akorensh <al...@gmail.com>.
Hi,

The only way to change the type of an existing field in a type is to destroy
all caches that  contains this type, remove the associated metadata and
recreate the aforementioned caches w/the new type.

You can remove an index.bin file and Ignite will rebuild it w/whatever is in
the associated caches.

See:
https://ignite.apache.org/docs/latest/data-modeling/binary-marshaller#modifying-binary-objects-using-binaryobjectbuilder  
Look for Limitations.

Thanks, Alex



--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/