33
33
package org .opensearch .common .settings ;
34
34
35
35
import org .opensearch .common .settings .Setting .Property ;
36
- import org .opensearch .common .unit .ByteSizeUnit ;
37
36
import org .opensearch .common .unit .ByteSizeValue ;
38
37
import org .opensearch .common .util .PageCacheRecycler ;
39
38
import org .opensearch .indices .IndexingMemoryController ;
@@ -83,32 +82,40 @@ public void testIndicesRequestCacheSetting() {
83
82
}
84
83
85
84
public void testCircuitBreakerSettings () {
86
- // default is chosen based on actual heap size
85
+ final Settings settings = Settings .builder ()
86
+ .put (HierarchyCircuitBreakerService .USE_REAL_MEMORY_USAGE_SETTING .getKey (), randomBoolean ())
87
+ .build ();
88
+
89
+ // default is chosen based on USE_REAL_MEMORY_USAGE_SETTING setting
87
90
double defaultTotalPercentage ;
88
- if (JvmInfo . jvmInfo (). getMem (). getHeapMax (). getBytes () < new ByteSizeValue ( 1 , ByteSizeUnit . GB ). getBytes ( )) {
91
+ if (HierarchyCircuitBreakerService . USE_REAL_MEMORY_USAGE_SETTING . get ( settings )) {
89
92
defaultTotalPercentage = 0.95d ;
90
93
} else {
91
94
defaultTotalPercentage = 0.7d ;
92
95
}
93
96
assertMemorySizeSetting (
94
97
HierarchyCircuitBreakerService .TOTAL_CIRCUIT_BREAKER_LIMIT_SETTING ,
95
98
"indices.breaker.total.limit" ,
96
- new ByteSizeValue ((long ) (JvmInfo .jvmInfo ().getMem ().getHeapMax ().getBytes () * defaultTotalPercentage ))
99
+ new ByteSizeValue ((long ) (JvmInfo .jvmInfo ().getMem ().getHeapMax ().getBytes () * defaultTotalPercentage )),
100
+ settings
97
101
);
98
102
assertMemorySizeSetting (
99
103
HierarchyCircuitBreakerService .FIELDDATA_CIRCUIT_BREAKER_LIMIT_SETTING ,
100
104
"indices.breaker.fielddata.limit" ,
101
- new ByteSizeValue ((long ) (JvmInfo .jvmInfo ().getMem ().getHeapMax ().getBytes () * 0.4 ))
105
+ new ByteSizeValue ((long ) (JvmInfo .jvmInfo ().getMem ().getHeapMax ().getBytes () * 0.4 )),
106
+ settings
102
107
);
103
108
assertMemorySizeSetting (
104
109
HierarchyCircuitBreakerService .REQUEST_CIRCUIT_BREAKER_LIMIT_SETTING ,
105
110
"indices.breaker.request.limit" ,
106
- new ByteSizeValue ((long ) (JvmInfo .jvmInfo ().getMem ().getHeapMax ().getBytes () * 0.6 ))
111
+ new ByteSizeValue ((long ) (JvmInfo .jvmInfo ().getMem ().getHeapMax ().getBytes () * 0.6 )),
112
+ settings
107
113
);
108
114
assertMemorySizeSetting (
109
115
HierarchyCircuitBreakerService .IN_FLIGHT_REQUESTS_CIRCUIT_BREAKER_LIMIT_SETTING ,
110
116
"network.breaker.inflight_requests.limit" ,
111
- new ByteSizeValue ((JvmInfo .jvmInfo ().getMem ().getHeapMax ().getBytes ()))
117
+ new ByteSizeValue ((JvmInfo .jvmInfo ().getMem ().getHeapMax ().getBytes ())),
118
+ settings
112
119
);
113
120
}
114
121
@@ -121,10 +128,14 @@ public void testIndicesFieldDataCacheSetting() {
121
128
}
122
129
123
130
private void assertMemorySizeSetting (Setting <ByteSizeValue > setting , String settingKey , ByteSizeValue defaultValue ) {
131
+ assertMemorySizeSetting (setting , settingKey , defaultValue , Settings .EMPTY );
132
+ }
133
+
134
+ private void assertMemorySizeSetting (Setting <ByteSizeValue > setting , String settingKey , ByteSizeValue defaultValue , Settings settings ) {
124
135
assertThat (setting , notNullValue ());
125
136
assertThat (setting .getKey (), equalTo (settingKey ));
126
137
assertThat (setting .getProperties (), hasItem (Property .NodeScope ));
127
- assertThat (setting .getDefault (Settings . EMPTY ), equalTo (defaultValue ));
138
+ assertThat (setting .getDefault (settings ), equalTo (defaultValue ));
128
139
Settings settingWithPercentage = Settings .builder ().put (settingKey , "25%" ).build ();
129
140
assertThat (
130
141
setting .get (settingWithPercentage ),
0 commit comments