in server/src/main/scala/com/twitter/server/handler/MetricExpressionHandler.scala [112:145]
def apply(request: Request): Future[Response] = {
val uri = Uri.fromRequest(request)
val latchParam = uri.params.getAll("latching_style")
val nameParam = uri.params.getAll("name").toSet
val namespaceParam = uri.params.getAll("namespace").toSet
val expressionSchemas = source.expressionList
val filteredSchemas = expressionSchemas.filter(expressionSchema =>
// namespace match if namespace param is present
(namespaceParam.isEmpty || namespaceParam.contains(expressionSchema.namespace.mkString(":")))
// name match if name param is present
&& (nameParam.isEmpty || nameParam.contains(expressionSchema.name)))
val shouldRate = latchParam.exists { value =>
value == "true" || value == "1"
}
val expressions = filteredSchemas.map { expressionSchema =>
expressionSchema.copy(exprQuery =
translateToQuery(expressionSchema.expr, shouldRate, sourceLatched, expressionSchema.labels))
}
newResponse(
contentType = MediaType.JsonUtf8,
content = Buf.Utf8(
AdminJsonConverter.writeToString(
Map(
"@version" -> Version,
"counters_latched" -> source.hasLatchedCounters,
"separator_char" -> metadataScopeSeparator(),
"expressions" -> expressions
))
)
)
}