You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ignite.apache.org by Denis Magda <dm...@apache.org> on 2017/05/18 13:40:46 UTC

Re: Problem with indexing LocalDate in Ignite 2.0

Cross posting to the dev list.

Vovan, Sergi, were there any changes related to java.time.LocalDate usage at the level of binary marshaller or SQL engine?

I can’t find any mentioning of this in the migration guide [1] which makes me thinking that this is a 2.0 bug.

[1] https://cwiki.apache.org/confluence/display/IGNITE/Apache+Ignite+2.0+Migration+Guide

—
Denis

> On May 18, 2017, at 5:41 AM, Andry <an...@gmail.com> wrote:
> 
> Hi guys,
> 
> We are having problem with indexing LocalDate after upgrade Ignite to 2.0
> version.
> 
> When we are trying to put second object with index=true for LocalDate type
> we are getting the following stack trace: 
> Exception in thread "main"
> org.apache.ignite.cache.CachePartialUpdateException: Failed to update keys
> (retry update if possible).: [2]
> 	at
> org.apache.ignite.internal.processors.cache.GridCacheUtils.convertToCacheException(GridCacheUtils.java:1407)
> 	at
> org.apache.ignite.internal.processors.cache.IgniteCacheProxy.cacheException(IgniteCacheProxy.java:2641)
> 	at
> org.apache.ignite.internal.processors.cache.IgniteCacheProxy.put(IgniteCacheProxy.java:1526)
> 	at TestLocalDate.main(TestLocalDate.java:21)
> Caused by: class
> org.apache.ignite.internal.processors.cache.CachePartialUpdateCheckedException:
> Failed to update keys (retry update if possible).: [2]
> 	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.put(GridCacheAdapter.java:2322)
> 	at
> org.apache.ignite.internal.processors.cache.IgniteCacheProxy.put(IgniteCacheProxy.java:1519)
> 	... 1 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)
> 		... 11 more
> 		Suppressed: java.lang.ClassCastException: java.time.LocalDate cannot be
> cast to java.sql.Date
> 			at
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing$RowDescriptor.wrap(IgniteH2Indexing.java:3656)
> 			at
> org.apache.ignite.internal.processors.query.h2.opt.GridH2AbstractKeyValueRow.getValue(GridH2AbstractKeyValueRow.java:242)
> 			at
> org.apache.ignite.internal.processors.query.h2.opt.GridH2AbstractKeyValueRow.toString(GridH2AbstractKeyValueRow.java:305)
> 			at java.lang.String.valueOf(String.java:2994)
> 			at java.lang.StringBuilder.append(StringBuilder.java:131)
> 			at
> org.apache.ignite.internal.processors.cache.database.tree.BPlusTree.doPut(BPlusTree.java:2022)
> 			at
> org.apache.ignite.internal.processors.cache.database.tree.BPlusTree.put(BPlusTree.java:1960)
> 			at
> org.apache.ignite.internal.processors.query.h2.database.H2TreeIndex.put(H2TreeIndex.java:209)
> 			at
> org.apache.ignite.internal.processors.query.h2.opt.GridH2Table.addToIndex(GridH2Table.java:638)
> 			at
> org.apache.ignite.internal.processors.query.h2.opt.GridH2Table.doUpdate(GridH2Table.java:583)
> 			at
> org.apache.ignite.internal.processors.query.h2.opt.GridH2Table.update(GridH2Table.java:492)
> 			at
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.store(IgniteH2Indexing.java:658)
> 			at
> org.apache.ignite.internal.processors.query.GridQueryProcessor.store(GridQueryProcessor.java:1543)
> 			at
> org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager.store(GridCacheQueryManager.java:417)
> 			at
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.finishUpdate(IgniteCacheOffheapManagerImpl.java:1063)
> 			at
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke(IgniteCacheOffheapManagerImpl.java:933)
> 			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)
> 			... 11 more
> 
> 
> The example of code could be found here -
> https://github.com/andry-k/test-index-local-date-ignite/blob/master/src/main/java/TestLocalDate.java
> 
> Please advise how should we deal with this.
> 
> 
> 
> --
> View this message in context: http://apache-ignite-users.70518.x6.nabble.com/Problem-with-indexing-LocalDate-in-Ignite-2-0-tp12993.html
> Sent from the Apache Ignite Users mailing list archive at Nabble.com.


Re: Problem with indexing LocalDate in Ignite 2.0

Posted by Andrey Mashenkov <an...@gmail.com>.
Hi Andry,

Seems, we update a H2 version in Ignite 2.0, but doesn't fix our code to
support Java 8 Data API.
Ticket [1] is still unresolved.


[1] https://issues.apache.org/jira/browse/IGNITE-4172

On Thu, May 18, 2017 at 6:08 PM, Andry <an...@gmail.com> wrote:

> I hope this information may help you, it looks like as it caused by new
> version of h2 database. In new version, h2 determines java.time.LocalDate
> as
> org.h2.value.Value.DATE (org.h2.value.DataType.getTypeFromClass), but
> Ignite
> still casts Value.DATE to java.sql.Date only.
>
>
>
> --
> View this message in context: http://apache-ignite-users.
> 70518.x6.nabble.com/Problem-with-indexing-LocalDate-in-
> Ignite-2-0-tp12993p13002.html
> Sent from the Apache Ignite Users mailing list archive at Nabble.com.
>



-- 
Best regards,
Andrey V. Mashenkov

Re: Problem with indexing LocalDate in Ignite 2.0

Posted by Andry <an...@gmail.com>.
I hope this information may help you, it looks like as it caused by new
version of h2 database. In new version, h2 determines java.time.LocalDate as
org.h2.value.Value.DATE (org.h2.value.DataType.getTypeFromClass), but Ignite
still casts Value.DATE to java.sql.Date only.



--
View this message in context: http://apache-ignite-users.70518.x6.nabble.com/Problem-with-indexing-LocalDate-in-Ignite-2-0-tp12993p13002.html
Sent from the Apache Ignite Users mailing list archive at Nabble.com.