From 67865c8be0cef11e31fd640da50149e5426e6784 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Tue, 2 Jul 2024 09:41:00 +0800 Subject: [PATCH] =?UTF-8?q?update=20-=20=E6=B5=8B=E8=AF=95=E5=88=86?= =?UTF-8?q?=E5=B8=83=E5=BC=8F=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CustomLockProcessInstanceInterceptor.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/interceptor/CustomLockProcessInstanceInterceptor.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/interceptor/CustomLockProcessInstanceInterceptor.java index 44294fc89..6638e1698 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/interceptor/CustomLockProcessInstanceInterceptor.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/interceptor/CustomLockProcessInstanceInterceptor.java @@ -1,6 +1,7 @@ package cn.axzo.workflow.core.engine.interceptor; import cn.axzo.workflow.core.engine.cmd.AbstractCommand; +import liquibase.pro.packaged.T; import org.flowable.common.engine.impl.interceptor.AbstractCommandInterceptor; import org.flowable.common.engine.impl.interceptor.Command; import org.flowable.common.engine.impl.interceptor.CommandConfig; @@ -58,7 +59,7 @@ public class CustomLockProcessInstanceInterceptor extends AbstractCommandInterce } finally { log.info("finally unlock threadName: {}, token: {}", Thread.currentThread().getName(), token); if (token != null) { - unlock(abstractCommand.getProcessInstanceId(), token); + unlock(KEY_PREFIX + abstractCommand.getProcessInstanceId(), token); } } } @@ -141,16 +142,22 @@ public class CustomLockProcessInstanceInterceptor extends AbstractCommandInterce try { Long result = (Long) conn.scriptingCommands().eval(unlockScript.getBytes(Charset.forName("UTF-8")), ReturnType.INTEGER, 1, keysAndArgs); - if (result != null && result > 0) + if (result != null && result > 0) { return true; + } else { + throw new IllegalStateException("unLock ProcessInstance fail"); + } } catch (Exception e) { log.warn("unlock error: {}", e.getMessage(), e); -// unlock(name, token); - return false; + try { + Thread.sleep(1000L); + } catch (InterruptedException ex) { + // ignore + } + return unlock(name, token); } finally { RedisConnectionUtils.releaseConnection(conn, factory); } - return false; }