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)

Reply via email to