From 0176f0ead37c907718115062909368e7c749af02 Mon Sep 17 00:00:00 2001 From: kexianjun Date: Thu, 6 Jun 2019 06:02:44 +0800 Subject: [PATCH] Use calculateTimeIdx to calculate array idx in LeapArray#getPreviousWindow (#723) * also some code cleanup --- .../java/com/alibaba/csp/sentinel/node/StatisticNode.java | 3 +-- .../csp/sentinel/slots/statistic/base/LeapArray.java | 3 +-- .../csp/sentinel/slots/statistic/metric/ArrayMetric.java | 8 ++++---- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/StatisticNode.java b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/StatisticNode.java index 493fcd79..80a8443c 100755 --- a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/StatisticNode.java +++ b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/StatisticNode.java @@ -147,8 +147,7 @@ public class StatisticNode implements Node { @Override public long totalRequest() { - long totalRequest = rollingCounterInMinute.pass() + rollingCounterInMinute.block(); - return totalRequest; + return rollingCounterInMinute.pass() + rollingCounterInMinute.block(); } @Override diff --git a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/statistic/base/LeapArray.java b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/statistic/base/LeapArray.java index 58a0dce0..2bba544b 100755 --- a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/statistic/base/LeapArray.java +++ b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/statistic/base/LeapArray.java @@ -209,8 +209,7 @@ public abstract class LeapArray { if (timeMillis < 0) { return null; } - long timeId = (timeMillis - windowLengthInMs) / windowLengthInMs; - int idx = (int)(timeId % array.length()); + int idx = calculateTimeIdx(timeMillis - windowLengthInMs); timeMillis = timeMillis - windowLengthInMs; WindowWrap wrap = array.get(idx); diff --git a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/statistic/metric/ArrayMetric.java b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/statistic/metric/ArrayMetric.java index f4c2a073..8647d994 100755 --- a/sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/statistic/metric/ArrayMetric.java +++ b/sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/statistic/metric/ArrayMetric.java @@ -234,8 +234,8 @@ public class ArrayMetric implements Metric { @Override public long previousWindowBlock() { - WindowWrap wrap = data.currentWindow(); - wrap = data.getPreviousWindow(); + data.currentWindow(); + WindowWrap wrap = data.getPreviousWindow(); if (wrap == null) { return 0; } @@ -244,8 +244,8 @@ public class ArrayMetric implements Metric { @Override public long previousWindowPass() { - WindowWrap wrap = data.currentWindow(); - wrap = data.getPreviousWindow(); + data.currentWindow(); + WindowWrap wrap = data.getPreviousWindow(); if (wrap == null) { return 0; }