ISSUE #1079: use CachingStatsProvider underly FinagleStatsProvider
Descriptions of the changes in this PR:
use CachingStatsProvider underly FinagleStatsProvider to avoid creating a lot of brand new object
Master Issue: #1079
Author: Jia Zhai <zhaijia@apache.org>
Reviewers: Sijie Guo <sijie@apache.org>
This closes #1082 from jiazhai/issue-1079, closes #1079
(cherry picked from commit c2d53a4c1781360a4fb5635e91f7fe133475c160)
Signed-off-by: Sijie Guo <sijie@apache.org>
diff --git a/bookkeeper-stats-providers/twitter-finagle-provider/src/main/java/org/apache/bookkeeper/stats/twitter/finagle/FinagleStatsProvider.java b/bookkeeper-stats-providers/twitter-finagle-provider/src/main/java/org/apache/bookkeeper/stats/twitter/finagle/FinagleStatsProvider.java
index affe2f9..aff129d 100644
--- a/bookkeeper-stats-providers/twitter-finagle-provider/src/main/java/org/apache/bookkeeper/stats/twitter/finagle/FinagleStatsProvider.java
+++ b/bookkeeper-stats-providers/twitter-finagle-provider/src/main/java/org/apache/bookkeeper/stats/twitter/finagle/FinagleStatsProvider.java
@@ -18,6 +18,7 @@
package org.apache.bookkeeper.stats.twitter.finagle;
import com.twitter.finagle.stats.StatsReceiver;
+import org.apache.bookkeeper.stats.CachingStatsProvider;
import org.apache.bookkeeper.stats.StatsLogger;
import org.apache.bookkeeper.stats.StatsProvider;
import org.apache.commons.configuration.Configuration;
@@ -29,9 +30,28 @@
*/
public class FinagleStatsProvider implements StatsProvider {
private final StatsReceiver stats;
+ private final CachingStatsProvider cachingStatsProvider;
public FinagleStatsProvider(final StatsReceiver stats) {
this.stats = stats;
+ this.cachingStatsProvider = new CachingStatsProvider(
+ new StatsProvider() {
+ @Override
+ public void start(Configuration conf) {
+ // nop
+ }
+
+ @Override
+ public void stop() {
+ // nop
+ }
+
+ @Override
+ public StatsLogger getStatsLogger(String scope) {
+ return new FinagleStatsLoggerImpl(stats.scope(scope));
+ }
+ }
+ );
}
@Override
@@ -42,6 +62,6 @@
@Override
public StatsLogger getStatsLogger(final String scope) {
- return new FinagleStatsLoggerImpl(this.stats.scope(scope));
+ return this.cachingStatsProvider.getStatsLogger(scope);
}
}