You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Pavel Tupitsyn (JIRA)" <ji...@apache.org> on 2016/08/09 12:32:26 UTC

[jira] [Updated] (IGNITE-3338) BinaryObjectException: Failed to get field because type ID of passed object differs from type ID this BinaryField belongs to - during load test with eviction configured

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

Pavel Tupitsyn updated IGNITE-3338:
-----------------------------------
    Fix Version/s:     (was: 1.7)
                   1.8

> BinaryObjectException: Failed to get field because type ID of passed object differs from type ID this BinaryField belongs to -  during load test with eviction configured
> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-3338
>                 URL: https://issues.apache.org/jira/browse/IGNITE-3338
>             Project: Ignite
>          Issue Type: Bug
>          Components: general
>            Reporter: Ksenia Rybakova
>             Fix For: 1.8
>
>
> The following exceptions occur during load test with eviction configured:
> {noformat}
> ERROR: The benchmark of random operation failed.
> Type '--help' for usage.
> Finishing main test [ts=1466178657166, date=Fri Jun 17 08:50:57 PDT 2016]
> ERROR: Shutting down benchmark driver to unexpected exception.
> Type '--help' for usage.
> org.apache.ignite.cache.CachePartialUpdateException: Failed to update keys (retry update if possible).: [268888, 1872066, 1945790, 2405741, 3845651, 4830233, 7284502, 8555643]
>         at org.apache.ignite.internal.processors.cache.GridCacheUtils.convertToCacheException(GridCacheUtils.java:1467)
>         at org.apache.ignite.internal.processors.cache.IgniteCacheProxy.cacheException(IgniteCacheProxy.java:1972)
>         at org.apache.ignite.internal.processors.cache.IgniteCacheProxy.removeAll(IgniteCacheProxy.java:1416)
>         at org.apache.ignite.yardstick.cache.load.IgniteCacheRandomOperationBenchmark.doRemoveAll(IgniteCacheRandomOperationBenchmark.java:809)
>         at org.apache.ignite.yardstick.cache.load.IgniteCacheRandomOperationBenchmark.executeRandomOperation(IgniteCacheRandomOperationBenchmark.java:551)
>         at org.apache.ignite.yardstick.cache.load.IgniteCacheRandomOperationBenchmark.executeOutOfTx(IgniteCacheRandomOperationBenchmark.java:509)
>         at org.apache.ignite.yardstick.cache.load.IgniteCacheRandomOperationBenchmark.test(IgniteCacheRandomOperationBenchmark.java:156)
>         at org.yardstickframework.impl.BenchmarkRunner$2.run(BenchmarkRunner.java:176)
>         at java.lang.Thread.run(Thread.java:745)
> Caused by: class org.apache.ignite.internal.processors.cache.CachePartialUpdateCheckedException: Failed to update keys (retry update if possible).: [268888, 1872066, 1945790, 2405741, 3845651, 4830233, 7284502, 8555643]
>         at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicUpdateFuture.onResult(GridNearAtomicUpdateFuture.java:311)
>         at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processNearAtomicUpdateResponse(GridDhtAtomicCache.java:2958)
>         at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$700(GridDhtAtomicCache.java:129)
>         at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$6.apply(GridDhtAtomicCache.java:266)
>         at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$6.apply(GridDhtAtomicCache.java:264)
>         at org.apache.ignite.internal.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:624)
>         at org.apache.ignite.internal.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:322)
>         at org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:246)
>         at org.apache.ignite.internal.processors.cache.GridCacheIoManager.access$000(GridCacheIoManager.java:83)
>         at org.apache.ignite.internal.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:205)
>         at org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1219)
>         at org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:847)
>         at org.apache.ignite.internal.managers.communication.GridIoManager.access$1700(GridIoManager.java:105)
>         at org.apache.ignite.internal.managers.communication.GridIoManager$5.run(GridIoManager.java:810)
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>         ... 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.GridNearAtomicUpdateResponse.addFailedKeys(GridNearAtomicUpdateResponse.java:369)
>                 at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1711)
>                 at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1482)
>                 at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processNearAtomicUpdateRequest(GridDhtAtomicCache.java:2937)
>                 at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$600(GridDhtAtomicCache.java:129)
>                 at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:260)
>                 at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:258)
>                 ... 12 more
>                 Suppressed: class org.apache.ignite.binary.BinaryObjectException: Failed to get field because type ID of passed object differs from type ID this BinaryField belongs to [expected=-1059871450, actual=-1558749226]
>                         at org.apache.ignite.internal.binary.BinaryFieldImpl.fieldOrder(BinaryFieldImpl.java:92)
>                         at org.apache.ignite.internal.binary.BinaryFieldImpl.value(BinaryFieldImpl.java:79)
>                         at org.apache.ignite.internal.processors.query.GridQueryProcessor$BinaryProperty.fieldValue(GridQueryProcessor.java:2051)
>                         at org.apache.ignite.internal.processors.query.GridQueryProcessor$BinaryProperty.value(GridQueryProcessor.java:2011)
>                         at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing$RowDescriptor.columnValue(IgniteH2Indexing.java:2543)
>                         at org.apache.ignite.internal.processors.query.h2.opt.GridH2AbstractKeyValueRow.getValue(GridH2AbstractKeyValueRow.java:289)
>                         at org.apache.ignite.internal.processors.query.h2.opt.GridH2IndexBase.compareRows(GridH2IndexBase.java:116)
>                         at org.apache.ignite.internal.processors.query.h2.opt.GridH2TreeIndex.compare(GridH2TreeIndex.java:248)
>                         at org.apache.ignite.internal.processors.query.h2.opt.GridH2TreeIndex.compare(GridH2TreeIndex.java:49)
>                         at org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap$2.compareTo(GridOffHeapSnapTreeMap.java:1350)
>                         at org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap$2.compareTo(GridOffHeapSnapTreeMap.java:1346)
>                         at org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap.attemptUpdate(GridOffHeapSnapTreeMap.java:2102)
>                         at org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap.attemptUpdate(GridOffHeapSnapTreeMap.java:2217)
>                         at org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap.attemptUpdate(GridOffHeapSnapTreeMap.java:2217)
>                         at org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap.attemptUpdate(GridOffHeapSnapTreeMap.java:2217)
>                         at org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap.attemptUpdate(GridOffHeapSnapTreeMap.java:2217)
>                         at org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap.attemptUpdate(GridOffHeapSnapTreeMap.java:2217)
>                         at org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap.attemptUpdate(GridOffHeapSnapTreeMap.java:2217)
>                         at org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap.attemptUpdate(GridOffHeapSnapTreeMap.java:2217)
>                         at org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap.attemptUpdate(GridOffHeapSnapTreeMap.java:2217)
>                         at org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap.attemptUpdate(GridOffHeapSnapTreeMap.java:2217)
>                         at org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap.attemptUpdate(GridOffHeapSnapTreeMap.java:2217)
>                         at org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap.attemptUpdate(GridOffHeapSnapTreeMap.java:2217)
>                         at org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap.attemptUpdate(GridOffHeapSnapTreeMap.java:2217)
>                         at org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap.attemptUpdate(GridOffHeapSnapTreeMap.java:2217)
>                         at org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap.attemptUpdate(GridOffHeapSnapTreeMap.java:2217)
>                         at org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap.attemptUpdate(GridOffHeapSnapTreeMap.java:2217)
>                         at org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap.updateUnderRoot(GridOffHeapSnapTreeMap.java:2034)
>                         at org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap.update(GridOffHeapSnapTreeMap.java:1915)
>                         at org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap.remove(GridOffHeapSnapTreeMap.java:1884)
>                         at org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap.remove(GridOffHeapSnapTreeMap.java:108)
>                         at org.apache.ignite.internal.processors.query.h2.opt.GridH2TreeIndex.remove(GridH2TreeIndex.java:408)
>                         at org.apache.ignite.internal.processors.query.h2.opt.GridH2Table.doUpdate(GridH2Table.java:433)
>                         at org.apache.ignite.internal.processors.query.h2.opt.GridH2Table.update(GridH2Table.java:339)
>                         at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.remove(IgniteH2Indexing.java:602)
>                         at org.apache.ignite.internal.processors.query.GridQueryProcessor.remove(GridQueryProcessor.java:1014)
>                         at org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager.remove(GridCacheQueryManager.java:434)
>                         at org.apache.ignite.internal.processors.cache.GridCacheMapEntry.clearIndex(GridCacheMapEntry.java:4027)
>                         at org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2509)
>                         at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2242)
>                         at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1642)
>                         ... 17 more
> {noformat}
> Observation: the issue is reproduced when eviction is configured for cache with indexed type.
> Load config:
> - benchmark: IgniteCacheRandomOperationBenchmark
> - preload entries: 5M
> - key range: 10M
> - servers: 20 (5 per host)
> - clients: 1
> - operations: PUT PUT_ALL GET GET_ALL INVOKE INVOKE_ALL REMOVE REMOVE_ALL PUT_IF_ABSENT REPLACE
> - Xmx8g -Xms8g
> - GC used: G1
> - backups: 2
> - batch size: 50
> - thread count: 64
> - sync mode: PRIMARY_SYNC
> - cache config:
> {noformat}
>     <bean name="atomic" class="org.apache.ignite.configuration.CacheConfiguration">
>         <property name="name" value="atomic"/>
>         <property name="cacheMode" value="PARTITIONED"/>
>         <property name="atomicityMode" value="ATOMIC"/>
>         <property name="swapEnabled" value="false"/>
>         <property name="offHeapMaxMemory" value="#{1024L*1024L*1024L*10L}"/>
>         <property name="evictionPolicy">
>             <bean class="org.apache.ignite.cache.eviction.fifo.FifoEvictionPolicy">
>                 <property name="maxSize" value="750000"/>
>             </bean>
>         </property>
>     </bean>
>     <bean name="atomic-offheap" class="org.apache.ignite.configuration.CacheConfiguration">
>         <property name="name" value="atomic-offheap"/>
>         <property name="cacheMode" value="PARTITIONED"/>
>         <property name="atomicityMode" value="ATOMIC"/>
>         <property name="swapEnabled" value="false"/>
>         <property name="memoryMode" value="OFFHEAP_TIERED"/>
>     </bean>
>     <bean name="atomic-offheap-values" class="org.apache.ignite.configuration.CacheConfiguration">
>         <property name="name" value="atomic-offheap-values"/>
>         <property name="cacheMode" value="PARTITIONED"/>
>         <property name="atomicityMode" value="ATOMIC"/>
>         <property name="swapEnabled" value="false"/>
>         <property name="memoryMode" value="OFFHEAP_VALUES"/>
>     </bean>
>     <bean name="tx" class="org.apache.ignite.configuration.CacheConfiguration">
>         <property name="name" value="tx"/>
>         <property name="cacheMode" value="PARTITIONED"/>
>         <property name="atomicityMode" value="TRANSACTIONAL"/>
>         <property name="swapEnabled" value="false"/>
>         <property name="offHeapMaxMemory" value="#{1024L*1024L*1024L*10L}"/>
>         <property name="evictionPolicy">
>             <bean class="org.apache.ignite.cache.eviction.fifo.FifoEvictionPolicy">
>                 <property name="maxSize" value="750000"/>
>             </bean>
>         </property>
>     </bean>
>     <bean name="tx-offheap" class="org.apache.ignite.configuration.CacheConfiguration">
>         <property name="name" value="tx-offheap"/>
>         <property name="cacheMode" value="PARTITIONED"/>
>         <property name="atomicityMode" value="TRANSACTIONAL"/>
>         <property name="swapEnabled" value="false"/>
>         <property name="memoryMode" value="OFFHEAP_TIERED"/>
>     </bean>
>     <bean name="tx-offheap-values" class="org.apache.ignite.configuration.CacheConfiguration">
>         <property name="name" value="tx-offheap-values"/>
>         <property name="cacheMode" value="PARTITIONED"/>
>         <property name="atomicityMode" value="TRANSACTIONAL"/>
>         <property name="swapEnabled" value="false"/>
>         <property name="memoryMode" value="OFFHEAP_VALUES"/>
>     </bean>
>     <bean name="atomic-index" class="org.apache.ignite.configuration.CacheConfiguration">
>         <property name="name" value="atomic-index"/>
>         <property name="cacheMode" value="PARTITIONED"/>
>         <property name="atomicityMode" value="ATOMIC"/>
>         <property name="swapEnabled" value="false"/>
>         <property name="offHeapMaxMemory" value="#{1024L*1024L*1024L*10L}"/>
>         <property name="evictionPolicy">
>             <bean class="org.apache.ignite.cache.eviction.fifo.FifoEvictionPolicy">
>                 <property name="maxSize" value="750000"/>
>             </bean>
>         </property>
>         <property name="indexedTypes">
>             <list>
>                 <value>java.lang.Integer</value>
>                 <value>org.apache.ignite.yardstick.cache.model.Person1</value>
>             </list>
>         </property>
>     </bean>
>     <bean name="query" class="org.apache.ignite.configuration.CacheConfiguration">
>         <property name="name" value="query"/>
>         <property name="cacheMode" value="PARTITIONED"/>
>         <property name="atomicityMode" value="ATOMIC"/>
>         <property name="swapEnabled" value="false"/>
>         <property name="offHeapMaxMemory" value="#{1024L*1024L*1024L*10L}"/>
>         <property name="evictionPolicy">
>             <bean class="org.apache.ignite.cache.eviction.fifo.FifoEvictionPolicy">
>                 <property name="maxSize" value="750000"/>
>             </bean>
>         </property>
>         <!-- Configure query entities -->
>         <property name="queryEntities">
>             <list>
>                 <bean class="org.apache.ignite.cache.QueryEntity">
>                     <property name="keyType" value="java.lang.Integer"/>
>                     <property name="valueType" value="org.apache.ignite.yardstick.cache.model.Person"/>
>                     <property name="fields">
>                         <map>
>                             <entry key="id" value="java.lang.Integer"/>
>                             <entry key="orgId" value="java.lang.Integer"/>
>                             <entry key="firstName" value="java.lang.String"/>
>                             <entry key="lastName" value="java.lang.String"/>
>                             <entry key="salary" value="java.lang.Double"/>
>                         </map>
>                     </property>
>                     <property name="indexes">
>                         <list>
>                             <bean class="org.apache.ignite.cache.QueryIndex">
>                                 <constructor-arg value="id"/>
>                             </bean>
>                             <!-- Group index. -->
>                             <bean class="org.apache.ignite.cache.QueryIndex">
>                                 <constructor-arg>
>                                     <list>
>                                         <value>id</value>
>                                         <value>salary</value>
>                                     </list>
>                                 </constructor-arg>
>                                 <constructor-arg value="SORTED"/>
>                             </bean>
>                         </list>
>                     </property>
>                 </bean>
>             </list>
>         </property>
>     </bean>
>     <bean name="orgCache" class="org.apache.ignite.configuration.CacheConfiguration">
>         <property name="name" value="orgCache"/>
>         <property name="cacheMode" value="PARTITIONED"/>
>         <property name="atomicityMode" value="ATOMIC"/>
>         <property name="swapEnabled" value="false"/>
>         <property name="offHeapMaxMemory" value="#{1024L*1024L*1024L*10L}"/>
>         <property name="evictionPolicy">
>             <bean class="org.apache.ignite.cache.eviction.fifo.FifoEvictionPolicy">
>                 <property name="maxSize" value="750000"/>
>             </bean>
>         </property>
>         <!-- Configure query entities -->
>         <property name="queryEntities">
>             <list>
>                 <bean class="org.apache.ignite.cache.QueryEntity">
>                     <property name="keyType" value="java.lang.Integer"/>
>                     <property name="valueType" value="org.apache.ignite.yardstick.cache.model.Organization"/>
>                     <property name="fields">
>                         <map>
>                             <entry key="id" value="java.lang.Integer"/>
>                             <entry key="name" value="java.lang.String"/>
>                         </map>
>                     </property>
>                     <property name="indexes">
>                         <list>
>                             <bean class="org.apache.ignite.cache.QueryIndex">
>                                 <constructor-arg value="id"/>
>                             </bean>
>                             <bean class="org.apache.ignite.cache.QueryIndex">
>                                 <constructor-arg value="name"/>
>                             </bean>
>                         </list>
>                     </property>
>                 </bean>
>             </list>
>         </property>
>     </bean>
>     <bean name="compute" class="org.apache.ignite.configuration.CacheConfiguration">
>         <property name="name" value="compute"/>
>         <property name="cacheMode" value="PARTITIONED"/>
>         <property name="atomicityMode" value="TRANSACTIONAL"/>
>         <property name="swapEnabled" value="false"/>
>         <property name="offHeapMaxMemory" value="#{1024L*1024L*1024L*10L}"/>
>         <property name="evictionPolicy">
>             <bean class="org.apache.ignite.cache.eviction.fifo.FifoEvictionPolicy">
>                 <property name="maxSize" value="750000"/>
>             </bean>
>         </property>
>     </bean>
> {noformat}



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