@@ -170,23 +170,30 @@ public Optional<T> call() {
170
170
}
171
171
}
172
172
173
+ private CacheStats previousStats = null ;
173
174
private long getSize () {
174
175
final long size = cache .size ();
175
176
final CacheStats stats = cache .stats ();
176
-
177
- getCounter ("hits" ).increment (stats .hitCount ());
178
- getCounter ("miss" ).increment (stats .missCount ());
179
- getCounter ("evictions" ).increment (stats .evictionCount ());
180
- getCounter ("requests" ).increment (stats .requestCount ());
181
-
182
- getCounter ("loadExceptionCount" ).increment (stats .loadExceptionCount ());
183
- getCounter ("loadCount" ).increment (stats .loadCount ());
184
- getCounter ("loadSuccessCount" ).increment (stats .loadSuccessCount ());
185
- getCounter ("totalLoadTime-ms" ).increment (cache .stats ().totalLoadTime ()/1000000 );
186
-
187
- getGauge ("hitrate" ).set (stats .hitRate ());
188
- getGauge ("loadExceptionRate" ).set (stats .loadExceptionRate ());
189
- getGauge ("averageLoadTime-ms" ).set (stats .averageLoadPenalty ()/1000000 );
177
+ if (previousStats != null ) {
178
+ try {
179
+ getCounter ("hits" ).increment (stats .hitCount () - previousStats .hitCount ());
180
+ getCounter ("miss" ).increment (stats .missCount () - previousStats .missCount ());
181
+ getCounter ("evictions" ).increment (stats .evictionCount () - previousStats .evictionCount ());
182
+ getCounter ("requests" ).increment (stats .requestCount () - previousStats .requestCount ());
183
+
184
+ getCounter ("loadExceptionCount" ).increment (stats .loadExceptionCount () - previousStats .loadExceptionCount ());
185
+ getCounter ("loadCount" ).increment (stats .loadCount () - previousStats .loadCount ());
186
+ getCounter ("loadSuccessCount" ).increment (stats .loadSuccessCount () - previousStats .loadSuccessCount ());
187
+ getCounter ("totalLoadTime-ms" ).increment (( stats .totalLoadTime () - previousStats .totalLoadTime ())/1000000 );
188
+
189
+ getGauge ("hitrate" ).set (stats .hitRate ());
190
+ getGauge ("loadExceptionRate" ).set (stats .loadExceptionRate ());
191
+ getGauge ("averageLoadTime-ms" ).set (stats .averageLoadPenalty ()/1000000 );
192
+ } catch (Exception e ) {
193
+ log .error ("Error while reporting stats" , e );
194
+ }
195
+ }
196
+ previousStats = stats ;
190
197
return size ;
191
198
}
192
199
0 commit comments