You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@storm.apache.org by da...@apache.org on 2014/06/23 21:42:22 UTC

[3/6] git commit: Added support for per-topology environment-variables

Added support for per-topology environment-variables


Project: http://git-wip-us.apache.org/repos/asf/incubator-storm/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-storm/commit/e1735d27
Tree: http://git-wip-us.apache.org/repos/asf/incubator-storm/tree/e1735d27
Diff: http://git-wip-us.apache.org/repos/asf/incubator-storm/diff/e1735d27

Branch: refs/heads/master
Commit: e1735d2760a7e66d0459968d066cfafb0a9ba1cf
Parents: 57b5e1a
Author: Kyle Nusbaum <kn...@yahoo-inc.com>
Authored: Tue Jun 17 23:00:43 2014 +0000
Committer: Kyle Nusbaum <kn...@yahoo-inc.com>
Committed: Tue Jun 17 23:00:43 2014 +0000

----------------------------------------------------------------------
 conf/defaults.yaml                                   |  1 +
 .../src/clj/backtype/storm/daemon/supervisor.clj     |  5 ++++-
 storm-core/src/jvm/backtype/storm/Config.java        | 15 +++++++++++++++
 3 files changed, 20 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-storm/blob/e1735d27/conf/defaults.yaml
----------------------------------------------------------------------
diff --git a/conf/defaults.yaml b/conf/defaults.yaml
index 9e31281..c9c813c 100644
--- a/conf/defaults.yaml
+++ b/conf/defaults.yaml
@@ -150,5 +150,6 @@ topology.kryo.factory: "backtype.storm.serialization.DefaultKryoFactory"
 topology.tuple.serializer: "backtype.storm.serialization.types.ListDelegateSerializer"
 topology.trident.batch.emit.interval.millis: 500
 topology.classpath: null
+topology.environment: null
 
 dev.zookeeper.path: "/tmp/dev-storm-zookeeper"

http://git-wip-us.apache.org/repos/asf/incubator-storm/blob/e1735d27/storm-core/src/clj/backtype/storm/daemon/supervisor.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/backtype/storm/daemon/supervisor.clj b/storm-core/src/clj/backtype/storm/daemon/supervisor.clj
index 61b0730..0969970 100644
--- a/storm-core/src/clj/backtype/storm/daemon/supervisor.clj
+++ b/storm-core/src/clj/backtype/storm/daemon/supervisor.clj
@@ -477,6 +477,9 @@
                              (substitute-worker-childopts s port))
           topo-worker-childopts (when-let [s (storm-conf TOPOLOGY-WORKER-CHILDOPTS)]
                                   (substitute-worker-childopts s port))
+          topology-worker-environment (if-let [env (storm-conf TOPOLOGY-ENVIRONMENT)]
+                                        (merge env {"LD_LIBRARY_PATH" jlp})
+                                        {"LD_LIBRARY_PATH" jlp})
           logfilename (str "worker-" port ".log")
           command (concat
                     [(java-cmd) "-server"]
@@ -500,7 +503,7 @@
                          (map #(str \' (clojure.string/escape % {\' "\\'"}) \'))
                          (clojure.string/join " "))]
       (log-message "Launching worker with command: " shell-cmd)
-      (launch-process command :environment {"LD_LIBRARY_PATH" jlp})
+      (launch-process command :environment topology-worker-environment)
       ))
 
 ;; local implementation

http://git-wip-us.apache.org/repos/asf/incubator-storm/blob/e1735d27/storm-core/src/jvm/backtype/storm/Config.java
----------------------------------------------------------------------
diff --git a/storm-core/src/jvm/backtype/storm/Config.java b/storm-core/src/jvm/backtype/storm/Config.java
index 4131918..eefaee7 100644
--- a/storm-core/src/jvm/backtype/storm/Config.java
+++ b/storm-core/src/jvm/backtype/storm/Config.java
@@ -688,6 +688,13 @@ public class Config extends HashMap<String, Object> {
     public static final Object TOPOLOGY_CLASSPATH_SCHEMA = ConfigValidation.StringOrStringListValidator;
 
     /**
+     * Topology-specific environment variables for the worker child process. 
+     * This is added to the existing environment (that of the supervisor)
+     */
+     public static final String TOPOLOGY_ENVIRONMENT="topology.environment";
+     public static final Object TOPOLOGY_ENVIRONMENT_SCHEMA = Map.class;
+
+    /**
      * This config is available for TransactionalSpouts, and contains the id ( a String) for
      * the transactional topology. This id is used to store the state of the transactional
      * topology in Zookeeper.
@@ -857,6 +864,14 @@ public class Config extends HashMap<String, Object> {
         setClasspath(this, cp);
     }
 
+    public static void setEnvironment(Map conf, Map env) {
+        conf.put(Config.TOPOLOGY_ENVIRONMENT, env);
+    }
+
+    public void setEnvironment(Map env) {
+        setEnvironment(this, env);
+    }
+
     public static void setDebug(Map conf, boolean isOn) {
         conf.put(Config.TOPOLOGY_DEBUG, isOn);
     }