[infinispan-issues] [JBoss JIRA] (ISPN-5599) Deadlock exception when purging string based JDBC Store

Dan Berindei (Jira) issues at jboss.org
Fri Jan 24 03:34:44 EST 2020


     [ https://issues.redhat.com/browse/ISPN-5599?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dan Berindei resolved ISPN-5599.
--------------------------------
    Resolution: Out of Date


JDBC locking has changed a lot with ISPN-10337 and ISPN-11101

> Deadlock exception when purging string based JDBC Store
> -------------------------------------------------------
>
>                 Key: ISPN-5599
>                 URL: https://issues.redhat.com/browse/ISPN-5599
>             Project: Infinispan
>          Issue Type: Bug
>          Components: Loaders and Stores
>    Affects Versions: 7.2.0.Final
>         Environment: Wildfly 8.2
>            Reporter: Richard Lucas
>            Priority: Major
>              Labels: cache-store, jdbc
>
> I'm seeing the following expectation periodically when purging my Infinispan cache using the JDBC string based cache store:
> {noformat}
> 12:45:20,752 WARN  [org.infinispan.persistence.manager.PersistenceManagerImpl] (expiration-thread--p2-t1) ISPN000026: Caught exception purging data container!: org.infinispan.persistence.spi.PersistenceException: java.util.concurrent.ExecutionException: org.infinispan.persistence.spi.PersistenceException: Failed clearing string based JDBC store
> 	at org.infinispan.persistence.jdbc.stringbased.JdbcStringBasedStore.purge(JdbcStringBasedStore.java:302) [infinispan-cachestore-jdbc.jar:7.2.0.Final]
> 	at org.infinispan.persistence.manager.PersistenceManagerImpl.purgeExpired(PersistenceManagerImpl.java:342) [infinispan-core.jar:7.2.0.Final]
> 	at org.infinispan.expiration.impl.ExpirationManagerImpl.processExpiration(ExpirationManagerImpl.java:101) [infinispan-core.jar:7.2.0.Final]
> 	at org.infinispan.expiration.impl.ExpirationManagerImpl$ScheduledTask.run(ExpirationManagerImpl.java:122) [infinispan-core.jar:7.2.0.Final]
> 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [rt.jar:1.8.0_40]
> 	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [rt.jar:1.8.0_40]
> 	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [rt.jar:1.8.0_40]
> 	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [rt.jar:1.8.0_40]
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_40]
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_40]
> 	at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_40]
> Caused by: java.util.concurrent.ExecutionException: org.infinispan.persistence.spi.PersistenceException: Failed clearing string based JDBC store
> 	at java.util.concurrent.FutureTask.report(FutureTask.java:122) [rt.jar:1.8.0_40]
> 	at java.util.concurrent.FutureTask.get(FutureTask.java:192) [rt.jar:1.8.0_40]
> 	at org.infinispan.persistence.jdbc.stringbased.JdbcStringBasedStore.purge(JdbcStringBasedStore.java:297) [infinispan-cachestore-jdbc.jar:7.2.0.Final]
> 	... 10 more
> Caused by: org.infinispan.persistence.spi.PersistenceException: Failed clearing string based JDBC store
> 	at org.infinispan.persistence.jdbc.stringbased.JdbcStringBasedStore$1.call(JdbcStringBasedStore.java:288) [infinispan-cachestore-jdbc.jar:7.2.0.Final]
> 	at org.infinispan.persistence.jdbc.stringbased.JdbcStringBasedStore$1.call(JdbcStringBasedStore.java:272) [infinispan-cachestore-jdbc.jar:7.2.0.Final]
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [rt.jar:1.8.0_40]
> 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [rt.jar:1.8.0_40]
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [rt.jar:1.8.0_40]
> 	... 3 more
> Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction
> 	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [rt.jar:1.8.0_40]
> 	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) [rt.jar:1.8.0_40]
> 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [rt.jar:1.8.0_40]
> 	at java.lang.reflect.Constructor.newInstance(Constructor.java:422) [rt.jar:1.8.0_40]
> 	at com.mysql.jdbc.Util.handleNewInstance(Util.java:408)
> 	at com.mysql.jdbc.Util.getInstance(Util.java:383)
> 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
> 	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4208)
> 	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4140)
> 	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2597)
> 	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2758)
> 	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2826)
> 	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2082)
> 	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2334)
> 	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2262)
> 	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2246)
> 	at com.mysql.jdbc.jdbc2.optional.PreparedStatementWrapper.executeUpdate(PreparedStatementWrapper.java:873)
> 	at org.jboss.jca.adapters.jdbc.CachedPreparedStatement.executeUpdate(CachedPreparedStatement.java:119)
> 	at org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:493)
> 	at org.infinispan.persistence.jdbc.stringbased.JdbcStringBasedStore$1.call(JdbcStringBasedStore.java:282) [infinispan-cachestore-jdbc.jar:7.2.0.Final]
> 	... 7 more
> {noformat}
> My cache configuration is:
> {code:xml}
> <cache-container default-cache="repo" statistics="false">
> 	<transport cluster="modeshape-cluster" stack="tcp"/>
> 	<jmx duplicate-domains="true"/>
> 	<replicated-cache name="repo" mode="SYNC">
> 		<locking striping="false" isolation="READ_COMMITTED"/>
> 		<transaction mode="NON_DURABLE_XA" locking="PESSIMISTIC"/>
> 		<persistence passivation="false">
> 			<string-keyed-jdbc-store xmlns="urn:infinispan:config:store:jdbc:7.0" fetch-state="false" read-only="false" purge="true" shared="true">
> 				<data-source jndi-url="java:jboss/datasources/ds"/>
> 				<string-keyed-table prefix="modeshape" create-on-start="true" drop-on-exit="false">
> 					<id-column name="id" type="VARCHAR(200)"/>
> 					<data-column name="datum" type="LONGBLOB"/>
> 					<timestamp-column name="version" type="BIGINT"/>
> 				</string-keyed-table>
> 			</string-keyed-jdbc-store>
> 		</persistence>
> 	</replicated-cache>
> </cache-container>
> {code}



--
This message was sent by Atlassian Jira
(v7.13.8#713008)


More information about the infinispan-issues mailing list