Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 49 additions & 2 deletions server/src/main/java/io/druid/server/metrics/MonitorsConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import io.druid.java.util.common.logger.Logger;
import io.druid.java.util.metrics.Monitor;
import io.druid.query.DruidMetrics;

Expand All @@ -35,17 +36,37 @@
*/
public class MonitorsConfig
{
private static final Logger log = new Logger(MonitorsConfig.class);

public static final String METRIC_DIMENSION_PREFIX = "druid.metrics.emitter.dimension.";

/**
* Prior to 0.12.0, Druid used Monitor classes from the `com.metamx.metrics` package.
* In 0.12.0, these Monitor classes were moved into Druid under `io.druid.java.util.metrics`.
* See https://github.com/druid-io/druid/pull/5289 for details.
*
* We automatically adjust old `com.metamx.metrics` package references to `io.druid.java.util.metrics`
* for backwards compatibility purposes, easing the upgrade process for users.
*/
public static final String OLD_METAMX_PACKAGE_NAME = "com.metamx.metrics";
public static final String NEW_DRUID_PACKAGE_NAME = "io.druid.java.util.metrics";

@JsonProperty("monitors")
@NotNull
private List<Class<? extends Monitor>> monitors = Lists.newArrayList();
private List<Class<? extends Monitor>> monitors;

public List<Class<? extends Monitor>> getMonitors()
{
return monitors;
}

public MonitorsConfig(
@JsonProperty("monitors") List<String> monitorNames
)
{
monitors = getMonitorsFromNames(monitorNames);
}

@Override
public String toString()
{
Expand All @@ -54,7 +75,6 @@ public String toString()
'}';
}


public static Map<String, String[]> mapOfDatasourceAndTaskID(
final String datasource,
final String taskId
Expand Down Expand Up @@ -86,4 +106,31 @@ public static Map<String, String[]> extractDimensions(Properties props, List<Str
}
return dimensionsMap;
}

private static List<Class<? extends Monitor>> getMonitorsFromNames(List<String> monitorNames)
{
List<Class<? extends Monitor>> monitors = Lists.newArrayList();
if (monitorNames == null) {
return monitors;
}
try {
for (String monitorName : monitorNames) {
String effectiveMonitorName = monitorName.replace(OLD_METAMX_PACKAGE_NAME, NEW_DRUID_PACKAGE_NAME);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about logging a warning to use the new name instead of the old one?

if (!effectiveMonitorName.equals(monitorName)) {
log.warn(
"Deprecated Monitor class name [%s] found, please use package %s instead of %s",
monitorName,
NEW_DRUID_PACKAGE_NAME,
OLD_METAMX_PACKAGE_NAME
);
}
Class<? extends Monitor> monitorClass = (Class<? extends Monitor>) Class.forName(effectiveMonitorName);
monitors.add(monitorClass);
}
return monitors;
}
catch (ClassNotFoundException cnfe) {
throw new RuntimeException(cnfe);
}
}
}