Skip to content

Commit 266b69b

Browse files
mosesnjenkins
authored and
jenkins
committed
{finagle-core,util-stats}: Move LoadedStatsReceiver to util-stats from finagle-core
Problem Putting LoadedStatsReceiver in finagle-core means that some things that finagle-core depends on can't use LoadedStatsReceiver. Solution Let's push it down to util-stats, the only additional dependency we need is util-stats => util-app. JIRA Issues: CSL-11393 Differential Revision: https://phabricator.twitter.biz/D763497
1 parent 2e6b8ac commit 266b69b

File tree

4 files changed

+34
-1
lines changed

4 files changed

+34
-1
lines changed

CHANGELOG.rst

+2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ New Features
1414
java.time.OffsetDateTime. `toInstant`, `toZonedDateTime`, and `toOffsetDateTime` also preserve
1515
nanosecond resolution. ``PHAB_ID=D757636``
1616

17+
* util-stats: Moved `c.t.finagle.stats.LoadedStatsReceiver` and `c.t.finagle.stats.DefaultStatsReceiver`
18+
from the finagle-core module to util-stats. ``PHAB_ID=D763497``
1719

1820
21.9.0
1921
------

build.sbt

+1-1
Original file line numberDiff line numberDiff line change
@@ -661,7 +661,7 @@ lazy val utilStats = Project(
661661
Seq("org.scala-lang.modules" %% "scala-parallel-collections" % "1.0.3" % "test")
662662
}
663663
}
664-
).dependsOn(utilCore, utilLint)
664+
).dependsOn(utilApp, utilCore, utilLint)
665665

666666
lazy val utilTest = Project(
667667
id = "util-test",

util-stats/src/main/scala/com/twitter/finagle/stats/BUILD

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ scala_library(
1616
"3rdparty/jvm/com/fasterxml/jackson/module:jackson-module-scala",
1717
"3rdparty/jvm/com/github/ben-manes/caffeine",
1818
"3rdparty/jvm/com/google/code/findbugs:jsr305",
19+
"util/util-app/src/main/scala",
1920
"util/util-core:util-core-util",
2021
"util/util-lint/src/main/scala/com/twitter/util/lint",
2122
],
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.twitter.finagle.stats
2+
3+
import com.twitter.app.LoadService
4+
5+
/**
6+
* A [[com.twitter.finagle.stats.StatsReceiver]] that loads
7+
* all service-loadable receivers and broadcasts stats to them.
8+
*/
9+
object LoadedStatsReceiver extends StatsReceiverProxy {
10+
11+
/**
12+
* Mutating this value at runtime after it has been initialized should be done
13+
* with great care. If metrics have been created using the prior
14+
* [[StatsReceiver]], updates to those metrics may not be reflected in the
15+
* [[StatsReceiver]] that replaces it. In addition, histograms created with
16+
* the prior [[StatsReceiver]] will not be available.
17+
*/
18+
@volatile var self: StatsReceiver = BroadcastStatsReceiver(LoadService[StatsReceiver]())
19+
}
20+
21+
/**
22+
* A "default" StatsReceiver loaded by the
23+
* [[com.twitter.finagle.util.LoadService]] mechanism.
24+
*/
25+
object DefaultStatsReceiver extends StatsReceiverProxy {
26+
def self: StatsReceiver = LoadedStatsReceiver
27+
override def repr: DefaultStatsReceiver.type = this
28+
29+
def get: StatsReceiver = this
30+
}

0 commit comments

Comments
 (0)