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
53 changes: 50 additions & 3 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
{
public final static String METRIC_DIMENSION_PREFIX = "druid.metrics.emitter.dimension.";
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);
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);
}
}
}