From dd944de09ef30b45306ba3a69b660e6adc8697b7 Mon Sep 17 00:00:00 2001 From: caofangkun Date: Tue, 11 Nov 2014 14:35:07 +0800 Subject: [PATCH] STORM-550:fix bug get an error when use --config option to override config file --- .../src/jvm/backtype/storm/utils/Utils.java | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/storm-core/src/jvm/backtype/storm/utils/Utils.java b/storm-core/src/jvm/backtype/storm/utils/Utils.java index 0e44479640f..10d1ef1a6c5 100644 --- a/storm-core/src/jvm/backtype/storm/utils/Utils.java +++ b/storm-core/src/jvm/backtype/storm/utils/Utils.java @@ -19,7 +19,10 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileNotFoundException; import java.io.FileOutputStream; +import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -31,6 +34,7 @@ import java.nio.channels.Channels; import java.nio.channels.WritableByteChannel; import java.util.ArrayList; +import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; import java.util.HashSet; @@ -44,6 +48,7 @@ import backtype.storm.serialization.DefaultSerializationDelegate; import backtype.storm.serialization.SerializationDelegate; + import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.CuratorFrameworkFactory; import org.apache.commons.lang.StringUtils; @@ -121,6 +126,27 @@ public static List findResources(String name) { throw new RuntimeException(e); } } + + @SuppressWarnings("unchecked") + public static Map loadConfigFile(String file) { + Map result = new HashMap(); + if (file == null) { + return result; + } + Yaml yaml = new Yaml(); + InputStream in; + try { + in = new FileInputStream(new File(file)); + Object obj = yaml.load(in); + if (!(obj instanceof Map)) { + return Collections. emptyMap(); + } + result = (Map) obj; + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } + return result; + } public static Map findAndReadConfigFile(String name, boolean mustExist) { try { @@ -187,7 +213,7 @@ public static Map readStormConfig() { if (confFile==null || confFile.equals("")) { storm = findAndReadConfigFile("storm.yaml", false); } else { - storm = findAndReadConfigFile(confFile, true); + storm = loadConfigFile(confFile); } ret.putAll(storm); ret.putAll(readCommandLineOpts());