diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/lock/AbstractLockProvider.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/lock/AbstractLockProvider.java index e51622d6..4041f294 100644 --- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/lock/AbstractLockProvider.java +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/lock/AbstractLockProvider.java @@ -35,7 +35,7 @@ public abstract class AbstractLockProvider implements LockProvider { try { return doLockAfter(lockConfig); } catch (Exception e) { - if (tryToCreateLockRecord) { + if (!tryToCreateLockRecord) { CacheLockRecord.remove(lockName); } diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/schedule/AbstractSchedule.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/schedule/AbstractSchedule.java index 74f0b522..d0d4cf92 100644 --- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/schedule/AbstractSchedule.java +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/schedule/AbstractSchedule.java @@ -45,16 +45,21 @@ public abstract class AbstractSchedule implements Schedule { LockConfig lockConfig = new LockConfig(LocalDateTime.now(), lockName, Duration.parse(lockAtMost), Duration.parse(lockAtLeast)); LockProvider lockProvider = getLockAccess(); + boolean lock = false; try { - if (lockProvider.lock(lockConfig)) { + lock = lockProvider.lock(lockConfig); + if (lock) { doExecute(); } } catch (Exception e) { LogUtils.error(log, this.getClass().getName() + " execute error. lockName:[{}]", lockName, e); } finally { - lockProvider.unlock(lockConfig); + if (lock) { + lockProvider.unlock(lockConfig); + } } + } protected abstract void doExecute();