Skip to content

Commit

Permalink
[HWKMETRICS-422] Make cache configuration configurable. The two prope…
Browse files Browse the repository at this point in the history
…rties maximum retention time without a read and maximum cache size. The default values are 60 minutes and 40k elements.
  • Loading branch information
Stefan Negrea committed Jun 28, 2016
1 parent 72e022d commit f31f0eb
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
import static org.hawkular.metrics.api.jaxrs.config.ConfigurationKey.CASSANDRA_USESSL;
import static org.hawkular.metrics.api.jaxrs.config.ConfigurationKey.DEFAULT_TTL;
import static org.hawkular.metrics.api.jaxrs.config.ConfigurationKey.DISABLE_METRICS_JMX;
import static org.hawkular.metrics.api.jaxrs.config.ConfigurationKey.METRICS_INDEX_CACHE_EXPIRE_MINUTES;
import static org.hawkular.metrics.api.jaxrs.config.ConfigurationKey.METRICS_INDEX_CACHE_MAXIMUM_SIZE;
import static org.hawkular.metrics.api.jaxrs.config.ConfigurationKey.USE_VIRTUAL_CLOCK;
import static org.hawkular.metrics.api.jaxrs.config.ConfigurationKey.WAIT_FOR_SERVICE;

Expand Down Expand Up @@ -165,6 +167,16 @@ public enum State {
@ConfigurationProperty(DISABLE_METRICS_JMX)
private String disableMetricsJmxReporting;

@Inject
@Configurable
@ConfigurationProperty(METRICS_INDEX_CACHE_EXPIRE_MINUTES)
private String metricsIndexCacheExpireMinutes;

@Inject
@Configurable
@ConfigurationProperty(METRICS_INDEX_CACHE_MAXIMUM_SIZE)
private String metricsIndexCacheMaximumSize;

@Inject
@ServiceReady
Event<ServiceReadyEvent> metricsServiceReady;
Expand Down Expand Up @@ -263,6 +275,9 @@ private void startMetricsService() {
metricsService.setConfigurationService(configurationService);
metricsService.setDefaultTTL(getDefaultTTL());

metricsService.resetCacheConfiguration(getDefaultMetricsIndexCacheExpireMinutes(),
getDefaultMetricsIndexCacheMaximumSize());

MetricRegistry metricRegistry = MetricRegistryProvider.INSTANCE.getMetricRegistry();
if (!Boolean.parseBoolean(disableMetricsJmxReporting)) {
jmxReporter = JmxReporter.forRegistry(metricRegistry).inDomain("hawkular.metrics").build();
Expand Down Expand Up @@ -399,6 +414,25 @@ private int getDefaultTTL() {
}
}

private int getDefaultMetricsIndexCacheExpireMinutes() {
try {
return Integer.parseInt(metricsIndexCacheExpireMinutes);
} catch (NumberFormatException e) {
log.warnInvalidDefaultTTL(metricsIndexCacheExpireMinutes,
METRICS_INDEX_CACHE_EXPIRE_MINUTES.defaultValue());
return Integer.parseInt(METRICS_INDEX_CACHE_EXPIRE_MINUTES.defaultValue());
}
}

private int getDefaultMetricsIndexCacheMaximumSize() {
try {
return Integer.parseInt(metricsIndexCacheMaximumSize);
} catch (NumberFormatException e) {
log.warnInvalidDefaultTTL(metricsIndexCacheMaximumSize, METRICS_INDEX_CACHE_MAXIMUM_SIZE.defaultValue());
return Integer.parseInt(METRICS_INDEX_CACHE_EXPIRE_MINUTES.defaultValue());
}
}

private void initJobs() {
// GenerateRate generateRates = new GenerateRate(metricsService);
// CreateTenants createTenants = new CreateTenants(metricsService, dataAcces);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,11 @@ public enum ConfigurationKey {
WAIT_FOR_SERVICE("hawkular.metrics.waitForService", null, null, true),
USE_VIRTUAL_CLOCK("hawkular.metrics.use-virtual-clock", "false", "USE_VIRTUAL_CLOCK", false),
DEFAULT_TTL("hawkular.metrics.default-ttl", "7", "DEFAULT_TTL", false),
DISABLE_METRICS_JMX("hawkular.metrics.disable-metrics-jmx-reporting", null, "DISABLE_METRICS_JMX", true);
DISABLE_METRICS_JMX("hawkular.metrics.disable-metrics-jmx-reporting", null, "DISABLE_METRICS_JMX", true),
METRICS_INDEX_CACHE_EXPIRE_MINUTES("hawkular.metrics.metrics-index-cache-expire-minutes",
"60", "METRICS_INDEX_CACHE_EXPIRE_MINUTES", false),
METRICS_INDEX_CACHE_MAXIMUM_SIZE("hawkular.metrics.metrics-index-cache-maximum-size",
"40000", "METRICS_INDEX_CACHE_MAXIMUM_SIZE", false);

private final String name;
private final String env;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ public void startUp(Session session, String keyspace, boolean resetDb, boolean c
.put(STRING, Functions::getStringDataPoint)
.build();

metricsIdxCache = CacheBuilder.newBuilder().expireAfterAccess(1, TimeUnit.HOURS).maximumSize(40000).build();
metricsIdxCache = CacheBuilder.newBuilder().expireAfterAccess(60, TimeUnit.MINUTES).maximumSize(40000).build();

initStringSize(session);
initMetrics();
Expand All @@ -272,6 +272,15 @@ public void clearMetricsIdxCaches() {
metricsIdxCache.invalidateAll();
}

public void resetCacheConfiguration(int expireAfterMinutes, int maximumSize) {
if (metricsIdxCache != null) {
metricsIdxCache.invalidateAll();
}

metricsIdxCache = CacheBuilder.newBuilder().expireAfterAccess(expireAfterMinutes, TimeUnit.MINUTES)
.maximumSize(maximumSize).build();
}

void loadDataRetentions() {
List<String> tenantIds = loadTenantIds();
CountDownLatch latch = new CountDownLatch(tenantIds.size() * 2);
Expand Down

0 comments on commit f31f0eb

Please sign in to comment.