Change key value if prefix changes

Some weird looking test failures led me to track this down.
If the user changes the prefix for metric names, he probably wanted
to change the keys as welll (otherwise 2 repositories can use the
same key, which is why the test was failing for me). We can do that
in an afterPropertiesSet().
pull/2035/head
Dave Syer 10 years ago
parent a702ff5c36
commit d724c9062b

@ -22,6 +22,7 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.boot.actuate.metrics.Metric; import org.springframework.boot.actuate.metrics.Metric;
import org.springframework.boot.actuate.metrics.repository.MetricRepository; import org.springframework.boot.actuate.metrics.repository.MetricRepository;
import org.springframework.boot.actuate.metrics.writer.Delta; import org.springframework.boot.actuate.metrics.writer.Delta;
@ -40,13 +41,15 @@ import org.springframework.util.Assert;
* *
* @author Dave Syer * @author Dave Syer
*/ */
public class RedisMetricRepository implements MetricRepository { public class RedisMetricRepository implements MetricRepository, InitializingBean {
private static final String DEFAULT_METRICS_PREFIX = "spring.metrics."; private static final String DEFAULT_METRICS_PREFIX = "spring.metrics.";
private static final String DEFAULT_KEY = "keys." + DEFAULT_METRICS_PREFIX;
private String prefix = DEFAULT_METRICS_PREFIX; private String prefix = DEFAULT_METRICS_PREFIX;
private String key = "keys." + DEFAULT_METRICS_PREFIX; private String key = DEFAULT_KEY;
private BoundZSetOperations<String, String> zSetOperations; private BoundZSetOperations<String, String> zSetOperations;
@ -58,6 +61,18 @@ public class RedisMetricRepository implements MetricRepository {
this.zSetOperations = this.redisOperations.boundZSetOps(this.key); this.zSetOperations = this.redisOperations.boundZSetOps(this.key);
} }
@Override
public void afterPropertiesSet() {
if (!DEFAULT_METRICS_PREFIX.equals(this.prefix)) {
if (DEFAULT_KEY.equals(this.key)) {
this.key = "keys." + this.prefix;
}
}
if (!DEFAULT_KEY.equals(this.key)) {
this.zSetOperations = this.redisOperations.boundZSetOps(this.key);
}
}
/** /**
* The prefix for all metrics keys. * The prefix for all metrics keys.
* @param prefix the prefix to set for all metrics keys * @param prefix the prefix to set for all metrics keys
@ -78,7 +93,6 @@ public class RedisMetricRepository implements MetricRepository {
*/ */
public void setKey(String key) { public void setKey(String key) {
this.key = key; this.key = key;
this.zSetOperations = this.redisOperations.boundZSetOps(this.key);
} }
@Override @Override

@ -44,6 +44,7 @@ public class RedisMetricRepositoryTests {
this.repository = new RedisMetricRepository(this.redis.getResource()); this.repository = new RedisMetricRepository(this.redis.getResource());
this.prefix = "spring.test." + System.currentTimeMillis(); this.prefix = "spring.test." + System.currentTimeMillis();
this.repository.setPrefix(this.prefix); this.repository.setPrefix(this.prefix);
this.repository.afterPropertiesSet();
} }
@After @After

Loading…
Cancel
Save