瀏覽代碼

Fix hookOnCancel handing logic in SentinelReactorSubscriber (#1089)

Signed-off-by: Eric Zhao <sczyh16@gmail.com>
master
Eric Zhao GitHub 5 年之前
父節點
當前提交
b05502f8c2
沒有發現已知的金鑰在資料庫的簽署中 GPG 金鑰 ID: 4AEE18F83AFDEB23
共有 2 個檔案被更改,包括 23 行新增1 行删除
  1. +1
    -1
      sentinel-adapter/sentinel-reactor-adapter/src/main/java/com/alibaba/csp/sentinel/adapter/reactor/SentinelReactorSubscriber.java
  2. +22
    -0
      sentinel-adapter/sentinel-reactor-adapter/src/test/java/com/alibaba/csp/sentinel/adapter/reactor/MonoSentinelOperatorIntegrationTest.java

+ 1
- 1
sentinel-adapter/sentinel-reactor-adapter/src/main/java/com/alibaba/csp/sentinel/adapter/reactor/SentinelReactorSubscriber.java 查看文件

@@ -155,7 +155,7 @@ public class SentinelReactorSubscriber<T> extends InheritableBaseSubscriber<T> {

@Override
protected void hookOnCancel() {
tryCompleteEntry();
}

private boolean tryCompleteEntry() {


+ 22
- 0
sentinel-adapter/sentinel-reactor-adapter/src/test/java/com/alibaba/csp/sentinel/adapter/reactor/MonoSentinelOperatorIntegrationTest.java 查看文件

@@ -162,6 +162,28 @@ public class MonoSentinelOperatorIntegrationTest {
assertEquals(1, cn.totalException());
}

@Test
public void testMultipleReactorTransformerLatterFlowControl() {
String resourceName1 = createResourceName("testMultipleReactorTransformerLatterFlowControl1");
String resourceName2 = createResourceName("testMultipleReactorTransformerLatterFlowControl2");
FlowRuleManager.loadRules(Collections.singletonList(
new FlowRule(resourceName2).setCount(0)
));
StepVerifier.create(Mono.just(2)
.transform(new SentinelReactorTransformer<>(resourceName1))
.transform(new SentinelReactorTransformer<>(resourceName2)))
.expectError(BlockException.class)
.verify();

ClusterNode cn1 = ClusterBuilderSlot.getClusterNode(resourceName1);
assertNotNull(cn1);
ClusterNode cn2 = ClusterBuilderSlot.getClusterNode(resourceName2);
assertNotNull(cn2);
assertEquals(1, cn2.blockRequest());
assertEquals(1, cn1.totalSuccess());
FlowRuleManager.loadRules(new ArrayList<>());
}

private String createResourceName(String resourceName) {
return "reactor_test_mono_" + resourceName;
}

Loading…
取消
儲存