From 0bd27fb80a8e86a43cba0879c91837d32608d983 Mon Sep 17 00:00:00 2001 From: benyamin2014 Date: Mon, 8 Aug 2022 11:20:42 +0800 Subject: [PATCH] Auto-extract value from ParamFlowArgument when blocked in ParamFlowSlot (#2776) * Assign actual value with the result of paramFlowKey method --- .../csp/sentinel/slots/block/flow/param/ParamFlowSlot.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sentinel-extension/sentinel-parameter-flow-control/src/main/java/com/alibaba/csp/sentinel/slots/block/flow/param/ParamFlowSlot.java b/sentinel-extension/sentinel-parameter-flow-control/src/main/java/com/alibaba/csp/sentinel/slots/block/flow/param/ParamFlowSlot.java index 0739a06a..f798c2be 100644 --- a/sentinel-extension/sentinel-parameter-flow-control/src/main/java/com/alibaba/csp/sentinel/slots/block/flow/param/ParamFlowSlot.java +++ b/sentinel-extension/sentinel-parameter-flow-control/src/main/java/com/alibaba/csp/sentinel/slots/block/flow/param/ParamFlowSlot.java @@ -82,6 +82,10 @@ public class ParamFlowSlot extends AbstractLinkedProcessorSlot { String triggeredParam = ""; if (args.length > rule.getParamIdx()) { Object value = args[rule.getParamIdx()]; + // Assign actual value with the result of paramFlowKey method + if (value instanceof ParamFlowArgument) { + value = ((ParamFlowArgument) value).paramFlowKey(); + } triggeredParam = String.valueOf(value); } throw new ParamFlowException(resourceWrapper.getName(), triggeredParam, rule);