فهرست منبع

enhancement #I90IRR 设置超时maxWaitSenconds之后,超时的组件仍旧执行会报出NPE的问题

everywhere.z 1 سال پیش
والد
کامیت
a79af2ba29
1فایلهای تغییر یافته به همراه11 افزوده شده و 7 حذف شده
  1. 11 7
      liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/ThenCondition.java

+ 11 - 7
liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/ThenCondition.java

@@ -51,13 +51,17 @@ public class ThenCondition extends Condition {
 		}
 		catch (Exception e) {
 			Slot slot = DataBus.getSlot(slotIndex);
-			String chainId = this.getCurrChainId();
-			// 这里事先取到exception set到slot里,为了方便finally取到exception
-			if (slot.isSubChain(chainId)) {
-				slot.setSubException(chainId, e);
-			}
-			else {
-				slot.setException(e);
+			//正常情况下slot不可能为null
+			//当设置了超时后,还在运行的组件就有可能因为主流程已经结束释放slot而导致slot为null
+			if (slot != null){
+				String chainId = this.getCurrChainId();
+				// 这里事先取到exception set到slot里,为了方便finally取到exception
+				if (slot.isSubChain(chainId)) {
+					slot.setSubException(chainId, e);
+				}
+				else {
+					slot.setException(e);
+				}
 			}
 			throw e;
 		}