bug #I8AR0L 组件定义了重试和回滚,回滚也会被重试

This commit is contained in:
everywhere.z
2023-10-31 00:11:54 +08:00
parent 0912d698a1
commit 95cdb9ca68
5 changed files with 92 additions and 6 deletions

View File

@@ -35,6 +35,7 @@ import com.yomahub.liteflow.monitor.MonitorBus;
import java.lang.reflect.Method;
import java.util.Deque;
import java.util.Map;
import java.util.function.Predicate;
/**
* 普通组件抽象类
@@ -158,13 +159,12 @@ public abstract class NodeComponent {
public void doRollback() throws Exception {
Slot slot = this.getSlot();
Deque<CmpStep> rollbackSteps = slot.getRollbackSteps();
if(!CollUtil.isEmpty(rollbackSteps)) {
for (CmpStep rollbackStep : rollbackSteps) {
Node refNode = rollbackStep.getRefNode();
if(refNode == this.getRefNode()) return;
}
boolean alreadyRollback = slot.getRollbackSteps().stream().anyMatch(cmpStep -> cmpStep.getRefNode().equals(getRefNode()));
if (alreadyRollback){
return;
}
CmpStep cmpStep = new CmpStep(nodeId, name, CmpStepTypeEnum.SINGLE);
cmpStep.setTag(this.getTag());
cmpStep.setInstance(this);

View File

@@ -0,0 +1,25 @@
package com.yomahub.liteflow.test.rollback.cmp;
import com.yomahub.liteflow.annotation.LiteflowRetry;
import com.yomahub.liteflow.core.NodeComponent;
import org.springframework.stereotype.Component;
@Component("m")
@LiteflowRetry(5)
public class MCmp extends NodeComponent {
private int flag = 0;
@Override
public void process() {
if(flag < 2) {
flag ++;
throw new RuntimeException();
}
System.out.println("MCmp executed!");
}
@Override
public void rollback() throws Exception {
System.out.println("MCmp rollback!");
}
}

View File

@@ -0,0 +1,20 @@
package com.yomahub.liteflow.test.rollback.cmp;
import com.yomahub.liteflow.annotation.LiteflowRetry;
import com.yomahub.liteflow.core.NodeComponent;
import org.springframework.stereotype.Component;
@Component("n")
@LiteflowRetry(3)
public class NCmp extends NodeComponent {
@Override
public void process() {
System.out.println("NCmp executed!");
throw new RuntimeException();
}
@Override
public void rollback() throws Exception {
System.out.println("NCmp rollback!");
}
}

View File

@@ -0,0 +1,23 @@
package com.yomahub.liteflow.test.rollback.cmp;
import com.yomahub.liteflow.annotation.LiteflowRetry;
import com.yomahub.liteflow.core.NodeComponent;
@LiteflowRetry(5)
public class MCmp extends NodeComponent {
private int flag = 0;
@Override
public void process() {
if(flag < 2) {
flag ++;
throw new RuntimeException();
}
System.out.println("MCmp executed!");
}
@Override
public void rollback() throws Exception {
System.out.println("MCmp rollback!");
}
}

View File

@@ -0,0 +1,18 @@
package com.yomahub.liteflow.test.rollback.cmp;
import com.yomahub.liteflow.annotation.LiteflowRetry;
import com.yomahub.liteflow.core.NodeComponent;
@LiteflowRetry(3)
public class NCmp extends NodeComponent {
@Override
public void process() {
System.out.println("NCmp executed!");
throw new RuntimeException();
}
@Override
public void rollback() throws Exception {
System.out.println("NCmp rollback!");
}
}