Ksenia Rybakova created IGNITE-15703:
----------------------------------------
Summary: ArrayIndexOutOfBoundsException when put data to
writeThrough cache with Cassandra chache store
Key: IGNITE-15703
URL: https://issues.apache.org/jira/browse/IGNITE-15703
Project: Ignite
Issue Type: Bug
Components: cassandra
Affects Versions: 2.8
Reporter: Ksenia Rybakova
Attachments: caches-cassandra.xml, client-cassandra.xml,
server-cassandra.xml
Test scenario:
1. Start and configure Cassandra with 'test_database' keyspace
2. Preload 10000 entries to 'write_through' table
3. Configure, start and activate ignite cluster 1 server node and 1 client node
(configs are attached)
4. Check preloaded data are not loaded from Cassandra since readThrough is not
enabled
5. Put data to 'write_through' cache (partitioned, atomic, with writeThrough
enabled):
put keys 1-100, putall keys 100-200, stream keys 200-10020
6. Check that changes in cache propagated to Cassandra.
Result: putting data to cache at step 5 fails with the following exception:
server node:
{code:java}
// [13:35:39,690][SEVERE][sys-stripe-1-#2][CassandraCacheStore] Failed to
execute Cassandra CQL statement: insert into "test_database"."write_through"
("id", "name", "salary", "orgid") values
(?,?,?,?);[13:35:39,690][SEVERE][sys-stripe-1-#2][CassandraCacheStore] Failed
to execute Cassandra CQL statement: insert into "test_database"."write_through"
("id", "name", "salary", "orgid") values (?,?,?,?);class
org.apache.ignite.IgniteException: Failed to execute Cassandra CQL statement:
insert into "test_database"."write_through" ("id", "name", "salary", "orgid")
values (?,?,?,?); at
org.apache.ignite.cache.store.cassandra.session.CassandraSessionImpl.execute(CassandraSessionImpl.java:179)
at
org.apache.ignite.cache.store.cassandra.CassandraCacheStore.write(CassandraCacheStore.java:297)
at
org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter.put(GridCacheStoreManagerAdapter.java:584)
at
org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.update(GridCacheMapEntry.java:6325)
at
org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:6080)
at
org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:5770)
at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.invokeClosure(BPlusTree.java:4013)
at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.access$5700(BPlusTree.java:3907)
at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invokeDown(BPlusTree.java:2026)
at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invoke(BPlusTree.java:1910)
at
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke0(IgniteCacheOffheapManagerImpl.java:1875)
at
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke(IgniteCacheOffheapManagerImpl.java:1858)
at
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.invoke(IgniteCacheOffheapManagerImpl.java:457)
at
org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2248)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2533)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update(GridDhtAtomicCache.java:1993)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1824)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1679)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processNearAtomicUpdateRequest(GridDhtAtomicCache.java:3146)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$400(GridDhtAtomicCache.java:151)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:286)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:281)
at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:1150)
at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:591)
at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:392)
at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:318)
at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.access$100(GridCacheIoManager.java:109)
at
org.apache.ignite.internal.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:308)
at
org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1726)
at
org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1333)
at
org.apache.ignite.internal.managers.communication.GridIoManager.access$4800(GridIoManager.java:157)
at
org.apache.ignite.internal.managers.communication.GridIoManager$8.execute(GridIoManager.java:1218)
at
org.apache.ignite.internal.managers.communication.TraceRunnable.run(TraceRunnable.java:54)
at
org.apache.ignite.internal.util.StripedExecutor$Stripe.body(StripedExecutor.java:564)
at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:119)
at java.lang.Thread.run(Thread.java:748)Caused by:
java.lang.ArrayIndexOutOfBoundsException: 4 at
org.apache.ignite.cache.store.cassandra.persistence.PersistenceController.bindValues(PersistenceController.java:452)
at
org.apache.ignite.cache.store.cassandra.persistence.PersistenceController.bindKeyValue(PersistenceController.java:202)
at
org.apache.ignite.cache.store.cassandra.CassandraCacheStore$3.bindStatement(CassandraCacheStore.java:315)
at
org.apache.ignite.cache.store.cassandra.session.CassandraSessionImpl.execute(CassandraSessionImpl.java:152)
... 35 more
{code}
client node:
{code:java}
// >>> OS name: Windows 10 10.0 amd64>>> OS name: Windows 10 10.0 amd64>>>
CPU(s): 4>>> Heap: 1.0GB>>> VM name: 17692@DESKTOP-FVDFB13>>> Local node
[ID=DA060801-6188-4A8E-BB0B-0DB27F2BC2D6, order=4, clientMode=true]>>> Local
node addresses: [127.0.0.1]>>> Local ports: TCP:10801 TCP:47101
[13:35:38,180][INFO][main][GridDiscoveryManager] Topology snapshot [ver=4,
locNode=da060801, servers=1, clients=1, state=ACTIVE, CPUs=4, offheap=6.4GB,
heap=3.0GB, aliveNodes=[TcpDiscoveryNode
[id=da060801-6188-4a8e-bb0b-0db27f2bc2d6, consistentId=10002, isClient=true,
ver=8.8.7#20210723-sha1:7285312e], TcpDiscoveryNode
[id=ae210bdb-2c4a-44f9-be31-6a8d7337c1d9, consistentId=1, isClient=false,
ver=8.8.7#20210723-sha1:7285312e]]][13:35:38,180][INFO][main][GridDiscoveryManager]
^-- Baseline [id=0, size=1, online=1,
offline=0][13:35:38,180][INFO][main][G] Node started : [stage="Configure system
pool" (94 ms),stage="Start managers" (720 ms),stage="Configure binary metadata"
(85 ms),stage="Start processors" (981 ms),stage="Init metastore" (1437
ms),stage="Finish recovery" (0 ms),stage="Join topology" (4351 ms),stage="Await
transition" (8 ms),stage="Await exchange" (508 ms),stage="Total time" (8184
ms)]OUT >>> [2021-10-07 13:35:38.181] Line 1 completed.OUT >>> [2021-10-07
13:35:38.181] Line 2 executing: put into caches "write_through" with
defaultkeytype=Integer, defaultvaluetype=Person, range=1..100;OUT >>> put into
cache 'write_through', key=Integer, value=Person,
range=1..100[13:35:39,700][INFO][sys-stripe-1-#2][GridDeploymentLocalStore]
Class locally deployed: class
org.apache.ignite.IgniteCheckedException[13:35:39,702][INFO][sys-stripe-1-#2][GridDeploymentLocalStore]
Class locally deployed: class
[Ljava.lang.StackTraceElement;[13:35:39,706][INFO][sys-stripe-1-#2][GridDeploymentLocalStore]
Class locally deployed: class org.apache.ignite.IgniteExceptionException in
thread "main" javax.cache.integration.CacheWriterException: class
org.apache.ignite.internal.processors.cache.CachePartialUpdateCheckedException:
Failed to update keys (retry update if possible).: [1] at
org.apache.ignite.internal.processors.cache.GridCacheUtils.convertToCacheException(GridCacheUtils.java:1244)
at
org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.cacheException(IgniteCacheProxyImpl.java:2078)
at
org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.put(IgniteCacheProxyImpl.java:1314)
at
org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.put(GatewayProtectedCacheProxy.java:817)
at org.apache.ignite.testtools.I2Tester.execModifyCaches(I2Tester.java:505) at
org.apache.ignite.testtools.I2Tester.parse(I2Tester.java:206) at
org.apache.ignite.testtools.I2Tester.main(I2Tester.java:112)Caused by: class
org.apache.ignite.internal.processors.cache.CachePartialUpdateCheckedException:
Failed to update keys (retry update if possible).: [1] at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture.onPrimaryError(GridNearAtomicAbstractUpdateFuture.java:420)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture.onPrimaryResponse(GridNearAtomicSingleUpdateFuture.java:257)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processNearAtomicUpdateResponse(GridDhtAtomicCache.java:3168)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$500(GridDhtAtomicCache.java:151)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$6.apply(GridDhtAtomicCache.java:305)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$6.apply(GridDhtAtomicCache.java:300)
at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:1150)
at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:591)
at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:392)
at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:318)
at
org.apache.ignite.internal.processors.cache.GridCacheIoManager.access$100(GridCacheIoManager.java:109)
at
org.apache.ignite.internal.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:308)
at
org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1726)
at
org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1333)
at
org.apache.ignite.internal.managers.communication.GridIoManager.access$4800(GridIoManager.java:157)
at
org.apache.ignite.internal.managers.communication.GridIoManager$8.execute(GridIoManager.java:1218)
at
org.apache.ignite.internal.managers.communication.TraceRunnable.run(TraceRunnable.java:54)
at
org.apache.ignite.internal.util.StripedExecutor$Stripe.body(StripedExecutor.java:564)
at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:119)
at java.lang.Thread.run(Thread.java:748) Suppressed: class
org.apache.ignite.IgniteCheckedException: Failed to update keys. at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.UpdateErrors.addFailedKey(UpdateErrors.java:107)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicUpdateResponse.addFailedKey(GridNearAtomicUpdateResponse.java:326)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2675)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update(GridDhtAtomicCache.java:1993)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1824)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1679)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processNearAtomicUpdateRequest(GridDhtAtomicCache.java:3146)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$400(GridDhtAtomicCache.java:151)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:286)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:281)
... 14 more Suppressed: class org.apache.ignite.IgniteCheckedException:
Runtime failure on search row: SearchRow [key=1262722378, hash=1, cacheId=0] at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invoke(BPlusTree.java:1940)
at
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke0(IgniteCacheOffheapManagerImpl.java:1875)
at
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke(IgniteCacheOffheapManagerImpl.java:1858)
at
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.invoke(IgniteCacheOffheapManagerImpl.java:457)
at
org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2248)
at
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2533)
... 21 more Caused by: class org.apache.ignite.IgniteCheckedException: class
org.apache.ignite.IgniteException: Failed to execute Cassandra CQL statement:
insert into "test_database"."write_through" ("id", "name", "salary", "orgid")
values (?,?,?,?); at
org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter.put(GridCacheStoreManagerAdapter.java:595)
at
org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.update(GridCacheMapEntry.java:6325)
at
org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:6080)
at
org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:5770)
at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.invokeClosure(BPlusTree.java:4013)
at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.access$5700(BPlusTree.java:3907)
at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invokeDown(BPlusTree.java:2026)
at
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invoke(BPlusTree.java:1910)
... 26 more Caused by: javax.cache.integration.CacheWriterException: class
org.apache.ignite.IgniteException: Failed to execute Cassandra CQL statement:
insert into "test_database"."write_through" ("id", "name", "salary", "orgid")
values (?,?,?,?); ... 34 more Caused by: class
org.apache.ignite.IgniteException: Failed to execute Cassandra CQL statement:
insert into "test_database"."write_through" ("id", "name", "salary", "orgid")
values (?,?,?,?); at
org.apache.ignite.cache.store.cassandra.session.CassandraSessionImpl.execute(CassandraSessionImpl.java:197)
at
org.apache.ignite.cache.store.cassandra.CassandraCacheStore.write(CassandraCacheStore.java:297)
at
org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter.put(GridCacheStoreManagerAdapter.java:584)
... 33 more Caused by: class org.apache.ignite.IgniteException: Failed to
execute Cassandra CQL statement: insert into "test_database"."write_through"
("id", "name", "salary", "orgid") values (?,?,?,?); at
org.apache.ignite.cache.store.cassandra.session.CassandraSessionImpl.execute(CassandraSessionImpl.java:179)
... 35 more Caused by: java.lang.ArrayIndexOutOfBoundsException: 4 at
org.apache.ignite.cache.store.cassandra.persistence.PersistenceController.bindValues(PersistenceController.java:452)
at
org.apache.ignite.cache.store.cassandra.persistence.PersistenceController.bindKeyValue(PersistenceController.java:202)
at
org.apache.ignite.cache.store.cassandra.CassandraCacheStore$3.bindStatement(CassandraCacheStore.java:315)
at
org.apache.ignite.cache.store.cassandra.session.CassandraSessionImpl.execute(CassandraSessionImpl.java:152)
... 35 more
{code}
Note: please, fix a typo in " Failed to execute Cassandra CQL statement" along
the way.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)