You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@storm.apache.org by pt...@apache.org on 2018/01/22 17:41:16 UTC
[10/38] storm git commit: add basic sanity check for metrics v2 config
add basic sanity check for metrics v2 config
Project: http://git-wip-us.apache.org/repos/asf/storm/repo
Commit: http://git-wip-us.apache.org/repos/asf/storm/commit/20a1cdc9
Tree: http://git-wip-us.apache.org/repos/asf/storm/tree/20a1cdc9
Diff: http://git-wip-us.apache.org/repos/asf/storm/diff/20a1cdc9
Branch: refs/heads/1.x-branch
Commit: 20a1cdc9ba04050ce8a436d1d587de45c6c6d195
Parents: cfa6cd6
Author: P. Taylor Goetz <pt...@gmail.com>
Authored: Fri Sep 29 16:06:22 2017 -0400
Committer: P. Taylor Goetz <pt...@gmail.com>
Committed: Fri Sep 29 16:06:22 2017 -0400
----------------------------------------------------------------------
storm-core/src/jvm/org/apache/storm/Config.java | 2 +-
.../storm/validation/ConfigValidation.java | 40 ++++++++++++++++++++
2 files changed, 41 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/storm/blob/20a1cdc9/storm-core/src/jvm/org/apache/storm/Config.java
----------------------------------------------------------------------
diff --git a/storm-core/src/jvm/org/apache/storm/Config.java b/storm-core/src/jvm/org/apache/storm/Config.java
index b41b2aa..2a41a94 100644
--- a/storm-core/src/jvm/org/apache/storm/Config.java
+++ b/storm-core/src/jvm/org/apache/storm/Config.java
@@ -139,7 +139,7 @@ public class Config extends HashMap<String, Object> {
@isString
public static final String STORM_META_SERIALIZATION_DELEGATE = "storm.meta.serialization.delegate";
- @isType(type=List.class)
+ @isListEntryCustom(entryValidatorClasses={MetricReportersValidator.class})
public static final String STORM_METRICS_REPORTERS = "storm.metrics.reporters";
/**
http://git-wip-us.apache.org/repos/asf/storm/blob/20a1cdc9/storm-core/src/jvm/org/apache/storm/validation/ConfigValidation.java
----------------------------------------------------------------------
diff --git a/storm-core/src/jvm/org/apache/storm/validation/ConfigValidation.java b/storm-core/src/jvm/org/apache/storm/validation/ConfigValidation.java
index fb220dd..8bcea84 100644
--- a/storm-core/src/jvm/org/apache/storm/validation/ConfigValidation.java
+++ b/storm-core/src/jvm/org/apache/storm/validation/ConfigValidation.java
@@ -493,6 +493,46 @@ public class ConfigValidation {
}
}
+ public static class MetricReportersValidator extends Validator {
+
+ @Override
+ public void validateField(String name, Object o) {
+ if(o == null) {
+ return;
+ }
+ SimpleTypeValidator.validateField(name, Map.class, o);
+ if(!((Map) o).containsKey("class") ) {
+ throw new IllegalArgumentException( "Field " + name + " must have map entry with key: class");
+ }
+ if(!((Map) o).containsKey("daemons") ) {
+ throw new IllegalArgumentException("Field " + name + " must have map entry with key: daemons");
+ } else {
+ // daemons can only be 'nimbus', 'supervisor', or 'worker'
+ Object list = ((Map)o).get("daemons");
+ if(list == null || !(list instanceof List)){
+ throw new IllegalArgumentException("Field 'daemons' must be a non-null list.");
+ }
+ List daemonList = (List)list;
+ for(Object string : daemonList){
+ if (string instanceof String &&
+ (((String) string).equals("nimbus") ||
+ ((String) string).equals("supervisor") ||
+ ((String) string).equals("worker"))) {
+ return;
+ }
+ throw new IllegalArgumentException("Field daemons must contain at least one of \"nimbus\", \"supervisor\", or \"worker\"");
+ }
+
+ }
+ if(((Map)o).containsKey("filter")){
+ Map filterMap = (Map)((Map)o).get("filter");
+ SimpleTypeValidator.validateField("filter", String.class, filterMap.get("class"));
+ }
+ SimpleTypeValidator.validateField(name, String.class, ((Map) o).get("class"));
+
+ }
+ }
+
public static class MapOfStringToMapOfStringToObjectValidator extends Validator {
@Override
public void validateField(String name, Object o) {