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

Bug fix: NPE when adding event count in ParamMapBucket (#494)

Signed-off-by: Eric Zhao <sczyh16@gmail.com>
master
Eric Zhao GitHub 6 роки тому
джерело
коміт
020a63fdb5
Не вдалося знайти GPG ключ що відповідає даному підпису Ідентифікатор GPG ключа: 4AEE18F83AFDEB23
1 змінених файлів з 10 додано та 3 видалено
  1. +10
    -3
      sentinel-extension/sentinel-parameter-flow-control/src/main/java/com/alibaba/csp/sentinel/slots/statistic/data/ParamMapBucket.java

+ 10
- 3
sentinel-extension/sentinel-parameter-flow-control/src/main/java/com/alibaba/csp/sentinel/slots/statistic/data/ParamMapBucket.java Переглянути файл

@@ -59,9 +59,16 @@ public class ParamMapBucket {
}

public ParamMapBucket add(RollingParamEvent event, int count, Object value) {
data[event.ordinal()].putIfAbsent(value, new AtomicInteger());
AtomicInteger counter = data[event.ordinal()].get(value);
counter.addAndGet(count);
// Note: not strictly concise.
if (counter == null) {
AtomicInteger old = data[event.ordinal()].putIfAbsent(value, new AtomicInteger(count));
if (old != null) {
old.addAndGet(count);
}
} else {
counter.addAndGet(count);
}
return this;
}

@@ -74,4 +81,4 @@ public class ParamMapBucket {
}

public static final int DEFAULT_MAX_CAPACITY = 200;
}
}

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