Переглянути джерело

Use calculateTimeIdx to calculate array idx in LeapArray#getPreviousWindow (#723)

* also some code cleanup
master
kexianjun Eric Zhao 5 роки тому
джерело
коміт
0176f0ead3
3 змінених файлів з 6 додано та 8 видалено
  1. +1
    -2
      sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/StatisticNode.java
  2. +1
    -2
      sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/statistic/base/LeapArray.java
  3. +4
    -4
      sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/statistic/metric/ArrayMetric.java

+ 1
- 2
sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/StatisticNode.java Переглянути файл

@@ -147,8 +147,7 @@ public class StatisticNode implements Node {


@Override @Override
public long totalRequest() { public long totalRequest() {
long totalRequest = rollingCounterInMinute.pass() + rollingCounterInMinute.block();
return totalRequest;
return rollingCounterInMinute.pass() + rollingCounterInMinute.block();
} }


@Override @Override


+ 1
- 2
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/statistic/base/LeapArray.java Переглянути файл

@@ -209,8 +209,7 @@ public abstract class LeapArray<T> {
if (timeMillis < 0) { if (timeMillis < 0) {
return null; return null;
} }
long timeId = (timeMillis - windowLengthInMs) / windowLengthInMs;
int idx = (int)(timeId % array.length());
int idx = calculateTimeIdx(timeMillis - windowLengthInMs);
timeMillis = timeMillis - windowLengthInMs; timeMillis = timeMillis - windowLengthInMs;
WindowWrap<T> wrap = array.get(idx); WindowWrap<T> wrap = array.get(idx);




+ 4
- 4
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/statistic/metric/ArrayMetric.java Переглянути файл

@@ -234,8 +234,8 @@ public class ArrayMetric implements Metric {


@Override @Override
public long previousWindowBlock() { public long previousWindowBlock() {
WindowWrap<MetricBucket> wrap = data.currentWindow();
wrap = data.getPreviousWindow();
data.currentWindow();
WindowWrap<MetricBucket> wrap = data.getPreviousWindow();
if (wrap == null) { if (wrap == null) {
return 0; return 0;
} }
@@ -244,8 +244,8 @@ public class ArrayMetric implements Metric {


@Override @Override
public long previousWindowPass() { public long previousWindowPass() {
WindowWrap<MetricBucket> wrap = data.currentWindow();
wrap = data.getPreviousWindow();
data.currentWindow();
WindowWrap<MetricBucket> wrap = data.getPreviousWindow();
if (wrap == null) { if (wrap == null) {
return 0; return 0;
} }


Завантаження…
Відмінити
Зберегти