Explorar el Código

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

* also some code cleanup
master
kexianjun Eric Zhao hace 5 años
padre
commit
0176f0ead3
Se han modificado 3 ficheros con 6 adiciones y 8 borrados
  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 Ver fichero

@@ -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


+ 1
- 2
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/statistic/base/LeapArray.java Ver fichero

@@ -209,8 +209,7 @@ public abstract class LeapArray<T> {
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<T> wrap = array.get(idx);



+ 4
- 4
sentinel-core/src/main/java/com/alibaba/csp/sentinel/slots/statistic/metric/ArrayMetric.java Ver fichero

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

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

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


Cargando…
Cancelar
Guardar