You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Vladimir Ozerov (JIRA)" <ji...@apache.org> on 2017/11/14 11:09:00 UTC

[jira] [Updated] (IGNITE-6901) IgniteH2Indexing#rebuildIndexesFromHash should pass old value to indexing engine

     [ https://issues.apache.org/jira/browse/IGNITE-6901?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Vladimir Ozerov updated IGNITE-6901:
------------------------------------
    Description: 
When index rebuild is triggered, index is updated from the method {{IgniteCacheOffheapManagerImpl.CacheDataStoreImpl.updateIndexes}}. Notice how we always pass {{null}} as previous row value. It breaks recent optimization which use previous value to avoid old row materialization IGNITE-6701, so assertion like this is observed:
{code}
java.lang.AssertionError: Replaced: true
[00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.query.h2.opt.GridH2Table.update(GridH2Table.java:451)
[00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.store(IgniteH2Indexing.java:581)
[00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.query.GridQueryProcessor.store(GridQueryProcessor.java:1748)
[00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager.store(GridCacheQueryManager.java:406)
[00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.updateIndexes(IgniteCacheOffheapManagerImpl.java:1375)
[00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.updateIndexes(GridCacheOffheapManager.java:1242)
[00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.updateIndexes(IgniteCacheOffheapManagerImpl.java:364)
[00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.cache.GridCacheMapEntry.ensureIndexed(GridCacheMapEntry.java:3149)
[00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.rebuildIndexesFromHash(IgniteH2Indexing.java:2030)
{code}

  was:
When index rebuild is triggered, index is updated from the method {{IgniteCacheOffheapManagerImpl.CacheDataStoreImpl.updateIndexes}}. Notice how we always pass {{null}} as previous row value. It breaks recent optimization which use previous value to avoid old row materialization IGNITE-6701, so assertion like this is observed:
{code}
[00:30:30][org.gridgain:gridgain-ultimate] Exception in thread "pub-#25397%database.IgniteDbSnapshotNotStableTopologiesTest3%" java.lang.AssertionError: Replaced: true
[00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.query.h2.opt.GridH2Table.update(GridH2Table.java:451)
[00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.store(IgniteH2Indexing.java:581)
[00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.query.GridQueryProcessor.store(GridQueryProcessor.java:1748)
[00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager.store(GridCacheQueryManager.java:406)
[00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.updateIndexes(IgniteCacheOffheapManagerImpl.java:1375)
[00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.updateIndexes(GridCacheOffheapManager.java:1242)
[00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.updateIndexes(IgniteCacheOffheapManagerImpl.java:364)
[00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.cache.GridCacheMapEntry.ensureIndexed(GridCacheMapEntry.java:3149)
[00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.rebuildIndexesFromHash(IgniteH2Indexing.java:2030)
{code}


> IgniteH2Indexing#rebuildIndexesFromHash should pass old value to indexing engine
> --------------------------------------------------------------------------------
>
>                 Key: IGNITE-6901
>                 URL: https://issues.apache.org/jira/browse/IGNITE-6901
>             Project: Ignite
>          Issue Type: Task
>      Security Level: Public(Viewable by anyone) 
>          Components: cache, persistence, sql
>            Reporter: Vladimir Ozerov
>            Assignee: Alexey Goncharuk
>             Fix For: 2.4
>
>
> When index rebuild is triggered, index is updated from the method {{IgniteCacheOffheapManagerImpl.CacheDataStoreImpl.updateIndexes}}. Notice how we always pass {{null}} as previous row value. It breaks recent optimization which use previous value to avoid old row materialization IGNITE-6701, so assertion like this is observed:
> {code}
> java.lang.AssertionError: Replaced: true
> [00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.query.h2.opt.GridH2Table.update(GridH2Table.java:451)
> [00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.store(IgniteH2Indexing.java:581)
> [00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.query.GridQueryProcessor.store(GridQueryProcessor.java:1748)
> [00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager.store(GridCacheQueryManager.java:406)
> [00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.updateIndexes(IgniteCacheOffheapManagerImpl.java:1375)
> [00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.updateIndexes(GridCacheOffheapManager.java:1242)
> [00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.updateIndexes(IgniteCacheOffheapManagerImpl.java:364)
> [00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.cache.GridCacheMapEntry.ensureIndexed(GridCacheMapEntry.java:3149)
> [00:30:30][org.gridgain:gridgain-ultimate] 	at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.rebuildIndexesFromHash(IgniteH2Indexing.java:2030)
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)