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 63557f93cc..1b2c1296c5 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 @@ -229,14 +229,20 @@ public class JdbcLockRegistry implements ExpirableLockRegistry { this.delegate.unlock(); return; } - try { - this.mutex.delete(this.path); - } - catch (Exception e) { - throw new DataAccessResourceFailureException("Failed to release mutex at " + this.path, e); - } - finally { - this.delegate.unlock(); + while (true) { + try { + this.mutex.delete(this.path); + return; + } + catch (TransientDataAccessException e) { + // try again + } + catch (Exception e) { + throw new DataAccessResourceFailureException("Failed to release mutex at " + this.path, e); + } + finally { + this.delegate.unlock(); + } } }