From f50a2947ac3d9a667f2f177cb44bd150986d883a Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Tue, 11 Jul 2017 16:25:45 +0200 Subject: [PATCH] INT-4311: JdbcLocks: QueryTimeoutException retry JIRA: https://jira.spring.io/browse/INT-4311 * Added `QueryTimeoutException` to retry handling in the `JdbcLockRegistry` Polishing **Cherry-pick to 4.3.x** --- .../integration/jdbc/lock/JdbcLockRegistry.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/lock/JdbcLockRegistry.java b/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/lock/JdbcLockRegistry.java index df7ec9cd31..b351ff5c29 100644 --- a/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/lock/JdbcLockRegistry.java +++ b/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/lock/JdbcLockRegistry.java @@ -28,6 +28,7 @@ import java.util.concurrent.locks.ReentrantLock; import org.springframework.dao.CannotAcquireLockException; import org.springframework.dao.CannotSerializeTransactionException; import org.springframework.dao.DataAccessResourceFailureException; +import org.springframework.dao.QueryTimeoutException; import org.springframework.integration.support.locks.DefaultLockRegistry; import org.springframework.integration.support.locks.ExpirableLockRegistry; import org.springframework.integration.support.locks.LockRegistry; @@ -45,6 +46,7 @@ import org.springframework.util.Assert; * @author Dave Syer * @author Artem Bilan * @author Vedran Pavic + * @author Kai Zimmermann * * @since 4.3 */ @@ -129,6 +131,9 @@ public class JdbcLockRegistry implements ExpirableLockRegistry { catch (TransactionTimedOutException e) { // try again } + catch (QueryTimeoutException e) { + // try again + } catch (InterruptedException e) { /* * This method must be uninterruptible so catch and ignore @@ -166,6 +171,9 @@ public class JdbcLockRegistry implements ExpirableLockRegistry { catch (TransactionTimedOutException e) { // try again } + catch (QueryTimeoutException e) { + // try again + } catch (InterruptedException ie) { this.delegate.unlock(); Thread.currentThread().interrupt(); @@ -213,6 +221,9 @@ public class JdbcLockRegistry implements ExpirableLockRegistry { catch (TransactionTimedOutException e) { // try again } + catch (QueryTimeoutException e) { + // try again + } catch (Exception e) { this.delegate.unlock(); rethrowAsLockException(e);