You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by at...@apache.org on 2021/06/11 18:56:30 UTC
[solr] branch main updated: SOLR-14588: Add Validation for Circuit
Breaker Thresholds
This is an automated email from the ASF dual-hosted git repository.
atri pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/main by this push:
new db968d7 SOLR-14588: Add Validation for Circuit Breaker Thresholds
db968d7 is described below
commit db968d788b180a20e2ebbf6ed27ce8ddddbe7688
Author: Atri Sharma <at...@gmail.com>
AuthorDate: Sat Jun 12 00:14:18 2021 +0530
SOLR-14588: Add Validation for Circuit Breaker Thresholds
This commit introduces validation for the thresholds set for memory and CPU circuit breakers.
---
.../solr/util/circuitbreaker/CircuitBreaker.java | 25 ++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/solr/core/src/java/org/apache/solr/util/circuitbreaker/CircuitBreaker.java b/solr/core/src/java/org/apache/solr/util/circuitbreaker/CircuitBreaker.java
index 90fda7a..86ce17d 100644
--- a/solr/core/src/java/org/apache/solr/util/circuitbreaker/CircuitBreaker.java
+++ b/solr/core/src/java/org/apache/solr/util/circuitbreaker/CircuitBreaker.java
@@ -61,6 +61,12 @@ public abstract class CircuitBreaker {
public abstract String getErrorMessage();
public static class CircuitBreakerConfig {
+ private static final int MEM_CB_THRESHOLD_LOWER_BOUND = 50;
+ private static final int MEM_CB_THRESHOLD_UPPER_BOUND = 95;
+
+ // CPU Circuit Breaker threshold is unbounded
+ private static final int CPU_CB_THRESHOLD_LOWER_BOUND = 0;
+
private final boolean enabled;
private final boolean memCBEnabled;
private final int memCBThreshold;
@@ -69,6 +75,8 @@ public abstract class CircuitBreaker {
public CircuitBreakerConfig(final boolean enabled, final boolean memCBEnabled, final int memCBThreshold,
final boolean cpuCBEnabled, final int cpuCBThreshold) {
+ validateCircuitBreakerThresholds(memCBEnabled, memCBThreshold, cpuCBEnabled, cpuCBThreshold);
+
this.enabled = enabled;
this.memCBEnabled = memCBEnabled;
this.memCBThreshold = memCBThreshold;
@@ -95,5 +103,22 @@ public abstract class CircuitBreaker {
public int getCpuCBThreshold() {
return cpuCBThreshold;
}
+
+ private static void validateCircuitBreakerThresholds(final boolean memCBEnabled, final int memCBThreshold,
+ final boolean cpuCBEnabled, final int cpuCBThreshold) {
+
+ if (cpuCBEnabled) {
+ if (cpuCBThreshold < CPU_CB_THRESHOLD_LOWER_BOUND) {
+ throw new IllegalArgumentException("CPU Circuit Breaker threshold cannot be less than " + CPU_CB_THRESHOLD_LOWER_BOUND);
+ }
+ }
+
+ if (memCBEnabled) {
+ if (memCBThreshold < MEM_CB_THRESHOLD_LOWER_BOUND || memCBThreshold > MEM_CB_THRESHOLD_UPPER_BOUND) {
+ throw new IllegalArgumentException("Memory Circuit Breaker threshold needs to be in the range of " + MEM_CB_THRESHOLD_LOWER_BOUND
+ + "," + MEM_CB_THRESHOLD_UPPER_BOUND);
+ }
+ }
+ }
}
}
\ No newline at end of file