Merge remote-tracking branch 'upstream/master' into STORM-166

Conflicts:
        STORM-UI-REST-API.md
        pom.xml
        storm-core/src/clj/backtype/storm/daemon/nimbus.clj
        storm-core/src/clj/backtype/storm/daemon/supervisor.clj
        storm-core/src/clj/backtype/storm/ui/core.clj
        storm-core/src/jvm/backtype/storm/generated/ClusterSummary.java
        storm-core/src/jvm/backtype/storm/generated/TopologyInfo.java
        storm-core/src/jvm/backtype/storm/generated/TopologySummary.java
        storm-core/src/py/storm/ttypes.py
        storm-core/test/clj/backtype/storm/nimbus_test.clj


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

Branch: refs/heads/nimbus-ha-branch
Commit: 85e4d5efce66352469cb4c9947922731e834ca5d
Parents: 8d4e561 559f0f2
Author: Parth Brahmbhatt <[email protected]>
Authored: Mon Mar 2 15:16:05 2015 -0800
Committer: Parth Brahmbhatt <[email protected]>
Committed: Mon Mar 2 15:16:05 2015 -0800

----------------------------------------------------------------------
 .gitignore                                      |    4 +-
 BYLAWS.md                                       |   31 +-
 CHANGELOG.md                                    |   18 +
 DEVELOPER.md                                    |   24 +-
 README.markdown                                 |    3 +
 SECURITY.md                                     |   10 +-
 STORM-UI-REST-API.md                            |   46 +-
 bin/storm-config.cmd                            |   14 +-
 bin/storm.cmd                                   |   33 +-
 conf/defaults.yaml                              |    2 +-
 docs/documentation/Trident-API-Overview.md      |    2 +-
 docs/images/architecture.png                    |  Bin 0 -> 69825 bytes
 docs/images/architecture.svg                    | 1458 +++
 docs/images/bolt.png                            |  Bin 0 -> 24796 bytes
 docs/images/bolt.svg                            |  743 ++
 docs/images/security.png                        |  Bin 0 -> 72415 bytes
 docs/images/security.svg                        | 1779 ++++
 docs/images/spout.png                           |  Bin 0 -> 22911 bytes
 docs/images/spout.svg                           |  833 ++
 docs/images/storm.svg                           | 1326 +++
 docs/images/topology.png                        |  Bin 59837 -> 64740 bytes
 docs/images/topology.svg                        | 1044 ++
 docs/images/topology_dark.png                   |  Bin 0 -> 49692 bytes
 docs/images/topology_dark.svg                   | 1101 +++
 .../jvm/storm/starter/BasicDRPCTopology.java    |    3 +-
 external/storm-hdfs/pom.xml                     |   18 +-
 .../storm/hdfs/bolt/HdfsFileTopology.java       |    6 +-
 .../storm/hdfs/bolt/SequenceFileTopology.java   |    4 +-
 .../storm/hdfs/trident/TridentFileTopology.java |    2 +-
 .../hdfs/trident/TridentSequenceTopology.java   |    6 +-
 external/storm-hive/README.md                   |  113 +
 external/storm-hive/pom.xml                     |  143 +
 .../org/apache/storm/hive/bolt/HiveBolt.java    |  289 +
 .../bolt/mapper/DelimitedRecordHiveMapper.java  |  143 +
 .../storm/hive/bolt/mapper/HiveMapper.java      |   81 +
 .../hive/bolt/mapper/JsonRecordHiveMapper.java  |  132 +
 .../apache/storm/hive/common/HiveOptions.java   |  146 +
 .../org/apache/storm/hive/common/HiveUtils.java |   76 +
 .../apache/storm/hive/common/HiveWriter.java    |  420 +
 .../apache/storm/hive/trident/HiveState.java    |  306 +
 .../storm/hive/trident/HiveStateFactory.java    |   31 +
 .../apache/storm/hive/trident/HiveUpdater.java  |   14 +
 .../apache/storm/hive/bolt/HiveSetupUtil.java   |  220 +
 .../apache/storm/hive/bolt/HiveTopology.java    |  150 +
 .../hive/bolt/HiveTopologyPartitioned.java      |  153 +
 .../apache/storm/hive/bolt/TestHiveBolt.java    |  330 +
 .../storm/hive/common/TestHiveWriter.java       |  193 +
 .../storm/hive/trident/TridentHiveTopology.java |  190 +
 external/storm-jdbc/LICENSE                     |  202 +
 external/storm-jdbc/README.md                   |  240 +
 external/storm-jdbc/pom.xml                     |  125 +
 .../storm/jdbc/bolt/AbstractJdbcBolt.java       |   57 +
 .../apache/storm/jdbc/bolt/JdbcInsertBolt.java  |   71 +
 .../apache/storm/jdbc/bolt/JdbcLookupBolt.java  |   76 +
 .../org/apache/storm/jdbc/common/Column.java    |  111 +
 .../apache/storm/jdbc/common/JdbcClient.java    |  228 +
 .../java/org/apache/storm/jdbc/common/Util.java |   75 +
 .../storm/jdbc/mapper/JdbcLookupMapper.java     |   26 +
 .../apache/storm/jdbc/mapper/JdbcMapper.java    |   33 +
 .../jdbc/mapper/SimpleJdbcLookupMapper.java     |   46 +
 .../storm/jdbc/mapper/SimpleJdbcMapper.java     |   92 +
 .../storm/jdbc/trident/state/JdbcQuery.java     |   40 +
 .../storm/jdbc/trident/state/JdbcState.java     |  145 +
 .../jdbc/trident/state/JdbcStateFactory.java    |   40 +
 .../storm/jdbc/trident/state/JdbcUpdater.java   |   32 +
 .../storm/jdbc/common/JdbcClientTest.java       |   88 +
 .../org/apache/storm/jdbc/common/UtilTest.java  |   69 +
 .../org/apache/storm/jdbc/spout/UserSpout.java  |   90 +
 .../jdbc/topology/AbstractUserTopology.java     |  106 +
 .../jdbc/topology/UserPersistanceTopology.java  |   48 +
 .../UserPersistanceTridentTopology.java         |   61 +
 external/storm-jdbc/src/test/sql/test.sql       |    1 +
 .../src/jvm/storm/kafka/PartitionManager.java   |    5 +-
 external/storm-redis/LICENSE                    |  202 +
 external/storm-redis/README.md                  |  137 +
 external/storm-redis/pom.xml                    |   65 +
 .../storm/redis/bolt/AbstractRedisBolt.java     |   67 +
 .../trident/mapper/TridentTupleMapper.java      |   27 +
 .../trident/state/RedisClusterMapState.java     |  294 +
 .../redis/trident/state/RedisClusterState.java  |   80 +
 .../trident/state/RedisClusterStateQuerier.java |   78 +
 .../trident/state/RedisClusterStateUpdater.java |   76 +
 .../redis/trident/state/RedisMapState.java      |  323 +
 .../storm/redis/trident/state/RedisState.java   |   83 +
 .../redis/trident/state/RedisStateQuerier.java  |   70 +
 .../state/RedisStateSetCountQuerier.java        |   74 +
 .../trident/state/RedisStateSetUpdater.java     |   80 +
 .../redis/trident/state/RedisStateUpdater.java  |   75 +
 .../redis/util/config/JedisClusterConfig.java   |   82 +
 .../redis/util/config/JedisPoolConfig.java      |   97 +
 .../util/container/JedisClusterContainer.java   |   47 +
 .../JedisCommandsContainerBuilder.java          |   38 +
 .../JedisCommandsInstanceContainer.java         |   25 +
 .../redis/util/container/JedisContainer.java    |   65 +
 .../storm/redis/topology/LookupWordCount.java   |  127 +
 .../redis/topology/PersistentWordCount.java     |  117 +
 .../storm/redis/topology/WordCounter.java       |   58 +
 .../apache/storm/redis/topology/WordSpout.java  |   88 +
 .../storm/redis/trident/PrintFunction.java      |   40 +
 .../redis/trident/WordCountTridentRedis.java    |   97 +
 .../trident/WordCountTridentRedisCluster.java   |  103 +
 .../WordCountTridentRedisClusterMap.java        |  101 +
 .../redis/trident/WordCountTridentRedisMap.java |   95 +
 .../redis/trident/WordCountTupleMapper.java     |   16 +
 pom.xml                                         |   15 +-
 storm-core/pom.xml                              |   13 +-
 storm-core/src/clj/backtype/storm/bootstrap.clj |   64 -
 storm-core/src/clj/backtype/storm/clojure.clj   |    2 +-
 storm-core/src/clj/backtype/storm/config.clj    |    3 +-
 .../src/clj/backtype/storm/daemon/drpc.clj      |    6 +-
 .../src/clj/backtype/storm/daemon/executor.clj  |   26 +-
 .../src/clj/backtype/storm/daemon/nimbus.clj    |   26 +-
 .../clj/backtype/storm/daemon/supervisor.clj    |  179 +-
 .../src/clj/backtype/storm/daemon/task.clj      |   16 +-
 .../src/clj/backtype/storm/daemon/worker.clj    |   70 +-
 .../src/clj/backtype/storm/messaging/local.clj  |    2 +-
 storm-core/src/clj/backtype/storm/tuple.clj     |    4 +-
 storm-core/src/clj/backtype/storm/ui/core.clj   |   61 +-
 .../src/clj/backtype/storm/ui/helpers.clj       |    1 +
 storm-core/src/clj/backtype/storm/util.clj      |    3 +
 .../storm/drpc/DRPCInvocationsClient.java       |    6 +
 .../src/jvm/backtype/storm/drpc/DRPCSpout.java  |   14 +-
 .../jvm/backtype/storm/drpc/ReturnResults.java  |    8 +-
 .../storm/generated/AlreadyAliveException.java  |  149 +-
 .../storm/generated/AuthorizationException.java |  149 +-
 .../src/jvm/backtype/storm/generated/Bolt.java  |  194 +-
 .../jvm/backtype/storm/generated/BoltStats.java |  908 +-
 .../storm/generated/ClusterSummary.java         |  383 +-
 .../storm/generated/ComponentCommon.java        |  426 +-
 .../storm/generated/ComponentObject.java        |   86 +-
 .../backtype/storm/generated/Credentials.java   |  220 +-
 .../storm/generated/DRPCExecutionException.java |  149 +-
 .../backtype/storm/generated/DRPCRequest.java   |  185 +-
 .../storm/generated/DistributedRPC.java         |  529 +-
 .../generated/DistributedRPCInvocations.java    | 1199 ++-
 .../jvm/backtype/storm/generated/ErrorInfo.java |  300 +-
 .../backtype/storm/generated/ExecutorInfo.java  |  198 +-
 .../storm/generated/ExecutorSpecificStats.java  |   72 +-
 .../backtype/storm/generated/ExecutorStats.java |  486 +-
 .../storm/generated/ExecutorSummary.java        |  371 +-
 .../storm/generated/GetInfoOptions.java         |  166 +-
 .../storm/generated/GlobalStreamId.java         |  185 +-
 .../jvm/backtype/storm/generated/Grouping.java  |  163 +-
 .../generated/InvalidTopologyException.java     |  149 +-
 .../backtype/storm/generated/JavaObject.java    |  239 +-
 .../backtype/storm/generated/JavaObjectArg.java |  108 +-
 .../backtype/storm/generated/KillOptions.java   |  176 +-
 .../jvm/backtype/storm/generated/Nimbus.java    | 9177 +++++++++++++-----
 .../storm/generated/NotAliveException.java      |  149 +-
 .../backtype/storm/generated/NullStruct.java    |  112 +-
 .../storm/generated/NumErrorsChoice.java        |    3 +-
 .../storm/generated/RebalanceOptions.java       |  348 +-
 .../storm/generated/ShellComponent.java         |  202 +-
 .../jvm/backtype/storm/generated/SpoutSpec.java |  194 +-
 .../backtype/storm/generated/SpoutStats.java    |  614 +-
 .../storm/generated/StateSpoutSpec.java         |  194 +-
 .../backtype/storm/generated/StormTopology.java |  410 +-
 .../backtype/storm/generated/StreamInfo.java    |  249 +-
 .../backtype/storm/generated/SubmitOptions.java |  208 +-
 .../storm/generated/SupervisorSummary.java      |  309 +-
 .../backtype/storm/generated/TopologyInfo.java  |  661 +-
 .../storm/generated/TopologyInitialStatus.java  |    3 +-
 .../storm/generated/TopologySummary.java        |  538 +-
 .../storm/messaging/ConnectionWithStatus.java   |   32 +
 .../backtype/storm/messaging/netty/Client.java  |  712 +-
 .../messaging/netty/SaslStormClientHandler.java |    5 +-
 .../backtype/storm/messaging/netty/Server.java  |  182 +-
 .../netty/StormClientPipelineFactory.java       |    5 +-
 .../security/auth/SimpleTransportPlugin.java    |    2 +-
 .../trident/drpc/ReturnResultsReducer.java      |    4 +-
 .../trident/spout/RichSpoutBatchExecutor.java   |    1 +
 storm-core/src/py/storm/DistributedRPC-remote   |   35 +-
 storm-core/src/py/storm/DistributedRPC.py       |   38 +-
 .../py/storm/DistributedRPCInvocations-remote   |   43 +-
 .../src/py/storm/DistributedRPCInvocations.py   |   95 +-
 storm-core/src/py/storm/Nimbus-remote           |  111 +-
 storm-core/src/py/storm/Nimbus.py               |  640 +-
 storm-core/src/py/storm/constants.py            |    6 +-
 storm-core/src/py/storm/ttypes.py               |  470 +-
 storm-core/src/ui/public/index.html             |    1 +
 .../test/clj/backtype/storm/clojure_test.clj    |    9 +-
 .../test/clj/backtype/storm/drpc_test.clj       |    8 +-
 .../test/clj/backtype/storm/grouping_test.clj   |    9 +-
 .../clj/backtype/storm/integration_test.clj     |   10 +-
 .../storm/messaging/netty_integration_test.clj  |    5 +-
 .../storm/messaging/netty_unit_test.clj         |   73 +-
 .../test/clj/backtype/storm/messaging_test.clj  |    6 +-
 .../test/clj/backtype/storm/metrics_test.clj    |    8 +-
 .../test/clj/backtype/storm/multilang_test.clj  |    6 +-
 .../test/clj/backtype/storm/nimbus_test.clj     |   22 +-
 .../scheduler/multitenant_scheduler_test.clj    |    4 +-
 .../test/clj/backtype/storm/scheduler_test.clj  |    4 +-
 .../storm/security/auth/AuthUtils_test.clj      |    6 +-
 .../backtype/storm/security/auth/auth_test.clj  |   13 +-
 .../storm/security/auth/drpc_auth_test.clj      |    7 +-
 .../storm/security/auth/nimbus_auth_test.clj    |   10 +-
 .../clj/backtype/storm/subtopology_test.clj     |    9 +-
 .../test/clj/backtype/storm/supervisor_test.clj |   16 +-
 .../test/clj/backtype/storm/tick_tuple_test.clj |    7 +-
 .../clj/backtype/storm/transactional_test.clj   |   14 +-
 .../test/clj/backtype/storm/worker_test.clj     |   37 +
 storm-dist/binary/src/main/assembly/binary.xml  |   38 +-
 202 files changed, 32950 insertions(+), 7507 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/storm/blob/85e4d5ef/STORM-UI-REST-API.md
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/storm/blob/85e4d5ef/conf/defaults.yaml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/storm/blob/85e4d5ef/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/storm/blob/85e4d5ef/storm-core/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/storm/blob/85e4d5ef/storm-core/src/clj/backtype/storm/config.clj
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/storm/blob/85e4d5ef/storm-core/src/clj/backtype/storm/daemon/nimbus.clj
----------------------------------------------------------------------
diff --cc storm-core/src/clj/backtype/storm/daemon/nimbus.clj
index 30d123d,f1b4082..eee0417
--- a/storm-core/src/clj/backtype/storm/daemon/nimbus.clj
+++ b/storm-core/src/clj/backtype/storm/daemon/nimbus.clj
@@@ -14,24 -14,32 +14,36 @@@
  ;; See the License for the specific language governing permissions and
  ;; limitations under the License.
  (ns backtype.storm.daemon.nimbus
+   (:import [org.apache.thrift.server THsHaServer THsHaServer$Args])
+   (:import [org.apache.thrift.protocol TBinaryProtocol 
TBinaryProtocol$Factory])
+   (:import [org.apache.thrift.exception])
+   (:import [org.apache.thrift.transport TNonblockingServerTransport 
TNonblockingServerSocket])
+   (:import [org.apache.commons.io FileUtils])
    (:import [java.nio ByteBuffer]
-            [java.util Collections]
 -           [java.util Collections HashMap])
++           [java.util Collections HashMap]
 +           [backtype.storm.generated NimbusSummary])
-   (:import [java.io FileNotFoundException])
+   (:import [java.io FileNotFoundException File FileOutputStream])
 +  (:import [java.net InetAddress])
    (:import [java.nio.channels Channels WritableByteChannel])
    (:import [backtype.storm.security.auth ThriftServer ThriftConnectionType 
ReqContext AuthUtils])
    (:use [backtype.storm.scheduler.DefaultScheduler])
    (:import [backtype.storm.scheduler INimbus SupervisorDetails WorkerSlot 
TopologyDetails
              Cluster Topologies SchedulerAssignment SchedulerAssignmentImpl 
DefaultScheduler ExecutorDetails])
-   (:use [backtype.storm bootstrap util zookeeper])
 +  (:import [backtype.storm.nimbus NimbusInfo])
-   (:import [backtype.storm.generated AuthorizationException GetInfoOptions
-                                      NumErrorsChoice])
-   (:use [backtype.storm.config :only [validate-configs-with-schemas]])
+   (:import [backtype.storm.utils TimeCacheMap TimeCacheMap$ExpiredCallback 
Utils ThriftTopologyUtils
+             BufferFileInputStream])
+   (:import [backtype.storm.generated NotAliveException AlreadyAliveException 
StormTopology ErrorInfo
+             ExecutorInfo InvalidTopologyException Nimbus$Iface 
Nimbus$Processor SubmitOptions TopologyInitialStatus
+             KillOptions RebalanceOptions ClusterSummary SupervisorSummary 
TopologySummary TopologyInfo
+             ExecutorSummary AuthorizationException GetInfoOptions 
NumErrorsChoice])
+   (:import [backtype.storm.daemon Shutdownable])
 -  (:use [backtype.storm util config log timer])
++  (:use [backtype.storm util config log timer zookeeper])
+   (:require [backtype.storm [cluster :as cluster] [stats :as stats]])
+   (:require [clojure.set :as set])
+   (:import [backtype.storm.daemon.common StormBase Assignment])
    (:use [backtype.storm.daemon common])
    (:import [org.apache.zookeeper data.ACL ZooDefs$Ids ZooDefs$Perms])
 +  (:import [backtype.storm.utils VersionInfo])
    (:gen-class
      :methods [^{:static true} [launch [backtype.storm.scheduler.INimbus] 
void]]))
  

http://git-wip-us.apache.org/repos/asf/storm/blob/85e4d5ef/storm-core/src/clj/backtype/storm/daemon/supervisor.clj
----------------------------------------------------------------------
diff --cc storm-core/src/clj/backtype/storm/daemon/supervisor.clj
index e53cb52,b9f9632..d315925
--- a/storm-core/src/clj/backtype/storm/daemon/supervisor.clj
+++ b/storm-core/src/clj/backtype/storm/daemon/supervisor.clj
@@@ -28,11 -35,8 +35,9 @@@
    (:gen-class
      :methods [^{:static true} [launch [backtype.storm.scheduler.ISupervisor] 
void]]))
  
- (bootstrap)
- 
  (defmulti download-storm-code cluster-mode)
  (defmulti launch-worker (fn [supervisor & _] (cluster-mode (:conf 
supervisor))))
 +(defmulti mk-code-distributor cluster-mode)
  
  ;; used as part of a map from port to this
  (defrecord LocalAssignment [storm-id executors])
@@@ -302,7 -306,7 +307,8 @@@
                                           ))
     :assignment-versions (atom {})
     :sync-retry (atom 0)
 +   :code-distributor (mk-code-distributor conf)
+    :download-lock (Object.)
     })
  
  (defn sync-processes [supervisor]
@@@ -431,16 -458,7 +463,7 @@@
        (doseq [[storm-id master-code-dir] storm-code-map]
          (when (and (not (downloaded-storm-ids storm-id))
                     (assigned-storm-ids storm-id))
-           (log-message "Downloading code for storm id "
-              storm-id
-              " from "
-              master-code-dir)
-           (download-storm-code conf storm-id master-code-dir supervisor)
-           (log-message "Finished downloading code for storm id "
-              storm-id
-              " from "
-              master-code-dir)
-           ))
 -          (download-storm-code conf storm-id master-code-dir download-lock)))
++          (download-storm-code conf storm-id master-code-dir supervisor 
download-lock)))
  
        (log-debug "Writing new assignment "
                   (pr-str new-assignment))
@@@ -544,21 -562,30 +567,23 @@@
  
  ;; distributed implementation
  (defmethod download-storm-code
-     :distributed [conf storm-id master-code-dir supervisor]
 -    :distributed [conf storm-id master-code-dir download-lock]
++    :distributed [conf storm-id master-code-dir supervisor download-lock]
      ;; Downloading to permanent location is atomic
      (let [tmproot (str (supervisor-tmp-dir conf) file-path-separator (uuid))
 -          stormroot (supervisor-stormdist-root conf storm-id)]
 +          stormroot (supervisor-stormdist-root conf storm-id)
 +          master-meta-file-path (master-storm-metafile-path master-code-dir)
 +          supervisor-meta-file-path (supervisor-storm-metafile-path tmproot)]
-       (FileUtils/forceMkdir (File. tmproot))
-       (Utils/downloadFromMaster conf master-meta-file-path 
supervisor-meta-file-path)
-       (if (:code-distributor supervisor)
-         (.download (:code-distributor supervisor) storm-id (File. 
supervisor-meta-file-path)))
-       (extract-dir-from-jar (supervisor-stormjar-path tmproot) 
RESOURCES-SUBDIR tmproot)
-       (if (.exists (File. stormroot)) (FileUtils/forceDelete (File. 
stormroot)))
-       (FileUtils/moveDirectory (File. tmproot) (File. stormroot))
-       (setup-storm-code-dir conf (read-supervisor-storm-conf conf storm-id) 
stormroot)      
-     ))
+       (locking download-lock
 -            (log-message "Downloading code for storm id "
 -                         storm-id
 -                         " from "
 -                         master-code-dir)
 -            (FileUtils/forceMkdir (File. tmproot))
 -
 -            (Utils/downloadFromMaster conf (master-stormjar-path 
master-code-dir) (supervisor-stormjar-path tmproot))
 -            (Utils/downloadFromMaster conf (master-stormcode-path 
master-code-dir) (supervisor-stormcode-path tmproot))
 -            (Utils/downloadFromMaster conf (master-stormconf-path 
master-code-dir) (supervisor-stormconf-path tmproot))
 -            (extract-dir-from-jar (supervisor-stormjar-path tmproot) 
RESOURCES-SUBDIR tmproot)
 -            (if-not (.exists (File. stormroot))
 -              (FileUtils/moveDirectory (File. tmproot) (File. stormroot))
 -              (FileUtils/deleteDirectory (File. tmproot)))
 -            (setup-storm-code-dir conf (read-supervisor-storm-conf conf 
storm-id) stormroot)
 -            (log-message "Finished downloading code for storm id "
 -                         storm-id
 -                         " from "
 -                         master-code-dir))
 -      ))
++        (log-message "Downloading code for storm id " storm-id " from " 
master-code-dir)
++        (FileUtils/forceMkdir (File. tmproot))
++        (Utils/downloadFromMaster conf master-meta-file-path 
supervisor-meta-file-path)
++        (if (:code-distributor supervisor)
++          (.download (:code-distributor supervisor) storm-id (File. 
supervisor-meta-file-path)))
++        (extract-dir-from-jar (supervisor-stormjar-path tmproot) 
RESOURCES-SUBDIR tmproot)
++        (if (.exists (File. stormroot)) (FileUtils/forceDelete (File. 
stormroot)))
++        (FileUtils/moveDirectory (File. tmproot) (File. stormroot))
++        (setup-storm-code-dir conf (read-supervisor-storm-conf conf storm-id) 
stormroot)
++        (log-message "Finished downloading code for storm id " storm-id " 
from " master-code-dir))))
  
  (defn write-log-metadata-to-yaml-file! [storm-id port data conf]
    (let [file (get-log-metadata-file storm-id port)]

http://git-wip-us.apache.org/repos/asf/storm/blob/85e4d5ef/storm-core/src/clj/backtype/storm/ui/core.clj
----------------------------------------------------------------------
diff --cc storm-core/src/clj/backtype/storm/ui/core.clj
index 726da73,f656b12..7fc9273
--- a/storm-core/src/clj/backtype/storm/ui/core.clj
+++ b/storm-core/src/clj/backtype/storm/ui/core.clj
@@@ -17,8 -17,9 +17,9 @@@
  (ns backtype.storm.ui.core
    (:use compojure.core)
    (:use ring.middleware.reload)
+   (:use [ring.middleware.json :only [wrap-json-params]])
    (:use [hiccup core page-helpers])
 -  (:use [backtype.storm config util log])
 +  (:use [backtype.storm config util log zookeeper])
    (:use [backtype.storm.ui helpers])
    (:use [backtype.storm.daemon [common :only [ACKER-COMPONENT-ID 
ACKER-INIT-STREAM-ID ACKER-ACK-STREAM-ID
                                                ACKER-FAIL-STREAM-ID system-id? 
mk-authorization-handler]]])
@@@ -492,18 -495,21 +493,20 @@@
          (cluster-summary (.getClusterInfo ^Nimbus$Client nimbus) user)))
    ([^ClusterSummary summ user]
       (let [sups (.get_supervisors summ)
-         used-slots (reduce + (map #(.get_num_used_workers ^SupervisorSummary 
%) sups))
-         total-slots (reduce + (map #(.get_num_workers ^SupervisorSummary %) 
sups))
-         free-slots (- total-slots used-slots)
-         total-tasks (->> (.get_topologies summ)
-                          (map #(.get_num_tasks ^TopologySummary %))
-                          (reduce +))
-         total-executors (->> (.get_topologies summ)
-                              (map #(.get_num_executors ^TopologySummary %))
-                              (reduce +))]
+            used-slots (reduce + (map #(.get_num_used_workers 
^SupervisorSummary %) sups))
+            total-slots (reduce + (map #(.get_num_workers ^SupervisorSummary 
%) sups))
+            free-slots (- total-slots used-slots)
+            topologies (.get_topologies_size summ)
+            total-tasks (->> (.get_topologies summ)
+                             (map #(.get_num_tasks ^TopologySummary %))
+                             (reduce +))
+            total-executors (->> (.get_topologies summ)
+                                 (map #(.get_num_executors ^TopologySummary %))
+                                 (reduce +))]
         {"user" user
          "stormVersion" (str (VersionInfo/getVersion))
 -        "nimbusUptime" (pretty-uptime-sec (.get_nimbus_uptime_secs summ))
          "supervisors" (count sups)
+         "topologies" topologies
          "slotsTotal" total-slots
          "slotsUsed"  used-slots
          "slotsFree" free-slots
@@@ -869,9 -855,15 +872,15 @@@
         spec errors))))
  
  (defn topology-config [topology-id]
 -  (with-nimbus nimbus
 -    (from-json (.getTopologyConf ^Nimbus$Client nimbus topology-id))))
 +  (thrift/with-configured-nimbus-connection nimbus
 +     (from-json (.getTopologyConf ^Nimbus$Client nimbus topology-id))))
  
+ (defn topology-op-response [topology-id op]
+   {"topologyOperation" op,
+    "topologyId" topology-id,
+    "status" "success"
+    })
+ 
  (defn check-include-sys?
    [sys?]
    (if (or (nil? sys?) (= "false" sys?)) false true))
@@@ -920,8 -910,8 +930,8 @@@
           (json-response (component-page id component (:window m) 
(check-include-sys? (:sys m)) user) (:callback m))))
    (GET "/api/v1/token" [ & m]
         (json-response (format "{\"antiForgeryToken\": \"%s\"}" 
*anti-forgery-token*) (:callback m) :serialize-fn identity))
-   (POST "/api/v1/topology/:id/activate" [:as {:keys [cookies 
servlet-request]} id]
+   (POST "/api/v1/topology/:id/activate" [:as {:keys [cookies 
servlet-request]} id & m]
 -    (with-nimbus nimbus
 +    (thrift/with-configured-nimbus-connection nimbus
        (let [tplg (->> (doto
                          (GetInfoOptions.)
                          (.set_num_err_choice NumErrorsChoice/NONE))
@@@ -930,9 -920,9 +940,9 @@@
          (assert-authorized-user servlet-request "activate" (topology-config 
id))
          (.activate nimbus name)
          (log-message "Activating topology '" name "'")))
-     (resp/redirect (str "/api/v1/topology/" (url-encode id))))
-   (POST "/api/v1/topology/:id/deactivate" [:as {:keys [cookies 
servlet-request]} id]
 -    (json-response (topology-op-response id "deactivate") (m "callback")))
++    (json-response (topology-op-response id "activate") (m "callback")))
+   (POST "/api/v1/topology/:id/deactivate" [:as {:keys [cookies 
servlet-request]} id & m]
 -    (with-nimbus nimbus
 +    (thrift/with-configured-nimbus-connection nimbus
        (let [tplg (->> (doto
                          (GetInfoOptions.)
                          (.set_num_err_choice NumErrorsChoice/NONE))
@@@ -941,9 -931,9 +951,9 @@@
          (assert-authorized-user servlet-request "deactivate" (topology-config 
id))
          (.deactivate nimbus name)
          (log-message "Deactivating topology '" name "'")))
-     (resp/redirect (str "/api/v1/topology/" (url-encode id))))
-   (POST "/api/v1/topology/:id/rebalance/:wait-time" [:as {:keys [cookies 
servlet-request]} id wait-time]
+     (json-response (topology-op-response id "deactivate") (m "callback")))
+   (POST "/api/v1/topology/:id/rebalance/:wait-time" [:as {:keys [cookies 
servlet-request]} id wait-time & m]
 -    (with-nimbus nimbus
 +    (thrift/with-configured-nimbus-connection nimbus
        (let [tplg (->> (doto
                          (GetInfoOptions.)
                          (.set_num_err_choice NumErrorsChoice/NONE))
@@@ -952,11 -943,16 +963,16 @@@
              options (RebalanceOptions.)]
          (assert-authorized-user servlet-request "rebalance" (topology-config 
id))
          (.set_wait_secs options (Integer/parseInt wait-time))
+         (if (and (not-nil? rebalance-options) (contains? rebalance-options 
"numWorkers"))
+           (.set_num_workers options (Integer/parseInt (.toString 
(rebalance-options "numWorkers")))))
+         (if (and (not-nil? rebalance-options) (contains? rebalance-options 
"executors"))
+           (doseq [keyval (rebalance-options "executors")]
+             (.put_to_num_executors options (key keyval) (Integer/parseInt 
(.toString (val keyval))))))
          (.rebalance nimbus name options)
          (log-message "Rebalancing topology '" name "' with wait time: " 
wait-time " secs")))
-     (resp/redirect (str "/api/v1/topology/" (url-encode id))))
-   (POST "/api/v1/topology/:id/kill/:wait-time" [:as {:keys [cookies 
servlet-request]} id wait-time]
+     (json-response (topology-op-response id "rebalance") (m "callback")))
+   (POST "/api/v1/topology/:id/kill/:wait-time" [:as {:keys [cookies 
servlet-request]} id wait-time & m]
 -    (with-nimbus nimbus
 +    (thrift/with-configured-nimbus-connection nimbus
        (let [tplg (->> (doto
                          (GetInfoOptions.)
                          (.set_num_err_choice NumErrorsChoice/NONE))

http://git-wip-us.apache.org/repos/asf/storm/blob/85e4d5ef/storm-core/src/jvm/backtype/storm/generated/ClusterSummary.java
----------------------------------------------------------------------
diff --cc storm-core/src/jvm/backtype/storm/generated/ClusterSummary.java
index 7e32c72,ee25ac8..e5651df
--- a/storm-core/src/jvm/backtype/storm/generated/ClusterSummary.java
+++ b/storm-core/src/jvm/backtype/storm/generated/ClusterSummary.java
@@@ -38,16 -50,24 +50,24 @@@ import javax.annotation.Generated
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  
- public class ClusterSummary implements 
org.apache.thrift.TBase<ClusterSummary, ClusterSummary._Fields>, 
java.io.Serializable, Cloneable {
+ @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
 -@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-2-6")
++@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-3-2")
+ public class ClusterSummary implements 
org.apache.thrift.TBase<ClusterSummary, ClusterSummary._Fields>, 
java.io.Serializable, Cloneable, Comparable<ClusterSummary> {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new 
org.apache.thrift.protocol.TStruct("ClusterSummary");
  
    private static final org.apache.thrift.protocol.TField 
SUPERVISORS_FIELD_DESC = new org.apache.thrift.protocol.TField("supervisors", 
org.apache.thrift.protocol.TType.LIST, (short)1);
 -  private static final org.apache.thrift.protocol.TField 
NIMBUS_UPTIME_SECS_FIELD_DESC = new 
org.apache.thrift.protocol.TField("nimbus_uptime_secs", 
org.apache.thrift.protocol.TType.I32, (short)2);
    private static final org.apache.thrift.protocol.TField 
TOPOLOGIES_FIELD_DESC = new org.apache.thrift.protocol.TField("topologies", 
org.apache.thrift.protocol.TType.LIST, (short)3);
 +  private static final org.apache.thrift.protocol.TField NIMBUSES_FIELD_DESC 
= new org.apache.thrift.protocol.TField("nimbuses", 
org.apache.thrift.protocol.TType.LIST, (short)4);
  
+   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = 
new HashMap<Class<? extends IScheme>, SchemeFactory>();
+   static {
+     schemes.put(StandardScheme.class, new 
ClusterSummaryStandardSchemeFactory());
+     schemes.put(TupleScheme.class, new ClusterSummaryTupleSchemeFactory());
+   }
+ 
    private List<SupervisorSummary> supervisors; // required
 -  private int nimbus_uptime_secs; // required
    private List<TopologySummary> topologies; // required
 +  private List<NimbusSummary> nimbuses; // required
  
    /** The set of fields this struct contains, along with convenience methods 
for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@@ -114,7 -134,8 +134,6 @@@
    }
  
    // isset id assignments
- 
 -  private static final int __NIMBUS_UPTIME_SECS_ISSET_ID = 0;
 -  private byte __isset_bitfield = 0;
    public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> 
metaDataMap;
    static {
      Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new 
EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@@ -149,27 -170,22 +168,27 @@@
     * Performs a deep copy on <i>other</i>.
     */
    public ClusterSummary(ClusterSummary other) {
 -    __isset_bitfield = other.__isset_bitfield;
      if (other.is_set_supervisors()) {
-       List<SupervisorSummary> __this__supervisors = new 
ArrayList<SupervisorSummary>();
+       List<SupervisorSummary> __this__supervisors = new 
ArrayList<SupervisorSummary>(other.supervisors.size());
        for (SupervisorSummary other_element : other.supervisors) {
          __this__supervisors.add(new SupervisorSummary(other_element));
        }
        this.supervisors = __this__supervisors;
      }
 -    this.nimbus_uptime_secs = other.nimbus_uptime_secs;
      if (other.is_set_topologies()) {
-       List<TopologySummary> __this__topologies = new 
ArrayList<TopologySummary>();
+       List<TopologySummary> __this__topologies = new 
ArrayList<TopologySummary>(other.topologies.size());
        for (TopologySummary other_element : other.topologies) {
          __this__topologies.add(new TopologySummary(other_element));
        }
        this.topologies = __this__topologies;
      }
 +    if (other.is_set_nimbuses()) {
-       List<NimbusSummary> __this__nimbuses = new ArrayList<NimbusSummary>();
++      List<NimbusSummary> __this__nimbuses = new 
ArrayList<NimbusSummary>(other.nimbuses.size());
 +      for (NimbusSummary other_element : other.nimbuses) {
 +        __this__nimbuses.add(new NimbusSummary(other_element));
 +      }
 +      this.nimbuses = __this__nimbuses;
 +    }
    }
  
    public ClusterSummary deepCopy() {
@@@ -403,26 -404,27 +422,27 @@@
  
    @Override
    public int hashCode() {
-     HashCodeBuilder builder = new HashCodeBuilder();
+     List<Object> list = new ArrayList<Object>();
  
      boolean present_supervisors = true && (is_set_supervisors());
-     builder.append(present_supervisors);
+     list.add(present_supervisors);
      if (present_supervisors)
-       builder.append(supervisors);
+       list.add(supervisors);
  
 -    boolean present_nimbus_uptime_secs = true;
 -    list.add(present_nimbus_uptime_secs);
 -    if (present_nimbus_uptime_secs)
 -      list.add(nimbus_uptime_secs);
 -
      boolean present_topologies = true && (is_set_topologies());
-     builder.append(present_topologies);
+     list.add(present_topologies);
      if (present_topologies)
-       builder.append(topologies);
+       list.add(topologies);
  
 +    boolean present_nimbuses = true && (is_set_nimbuses());
-     builder.append(present_nimbuses);
++    list.add(present_nimbuses);
 +    if (present_nimbuses)
-       builder.append(nimbuses);
++      list.add(nimbuses);
 +
-     return builder.toHashCode();
+     return list.hashCode();
    }
  
+   @Override
    public int compareTo(ClusterSummary other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
@@@ -441,22 -442,22 +460,22 @@@
          return lastComparison;
        }
      }
-     lastComparison = 
Boolean.valueOf(is_set_topologies()).compareTo(typedOther.is_set_topologies());
 -    lastComparison = 
Boolean.valueOf(is_set_nimbus_uptime_secs()).compareTo(other.is_set_nimbus_uptime_secs());
++    lastComparison = 
Boolean.valueOf(is_set_topologies()).compareTo(other.is_set_topologies());
      if (lastComparison != 0) {
        return lastComparison;
      }
 -    if (is_set_nimbus_uptime_secs()) {
 -      lastComparison = 
org.apache.thrift.TBaseHelper.compareTo(this.nimbus_uptime_secs, 
other.nimbus_uptime_secs);
 +    if (is_set_topologies()) {
-       lastComparison = 
org.apache.thrift.TBaseHelper.compareTo(this.topologies, typedOther.topologies);
++      lastComparison = 
org.apache.thrift.TBaseHelper.compareTo(this.topologies, other.topologies);
        if (lastComparison != 0) {
          return lastComparison;
        }
      }
-     lastComparison = 
Boolean.valueOf(is_set_nimbuses()).compareTo(typedOther.is_set_nimbuses());
 -    lastComparison = 
Boolean.valueOf(is_set_topologies()).compareTo(other.is_set_topologies());
++    lastComparison = 
Boolean.valueOf(is_set_nimbuses()).compareTo(other.is_set_nimbuses());
      if (lastComparison != 0) {
        return lastComparison;
      }
 -    if (is_set_topologies()) {
 -      lastComparison = 
org.apache.thrift.TBaseHelper.compareTo(this.topologies, other.topologies);
 +    if (is_set_nimbuses()) {
-       lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.nimbuses, 
typedOther.nimbuses);
++      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.nimbuses, 
other.nimbuses);
        if (lastComparison != 0) {
          return lastComparison;
        }
@@@ -627,10 -519,7 +537,11 @@@
        throw new org.apache.thrift.protocol.TProtocolException("Required field 
'topologies' is unset! Struct:" + toString());
      }
  
 +    if (!is_set_nimbuses()) {
 +      throw new org.apache.thrift.protocol.TProtocolException("Required field 
'nimbuses' is unset! Struct:" + toString());
 +    }
 +
+     // check for sub-struct validity
    }
  
    private void writeObject(java.io.ObjectOutputStream out) throws 
java.io.IOException {
@@@ -649,5 -540,175 +560,211 @@@
      }
    }
  
+   private static class ClusterSummaryStandardSchemeFactory implements 
SchemeFactory {
+     public ClusterSummaryStandardScheme getScheme() {
+       return new ClusterSummaryStandardScheme();
+     }
+   }
+ 
+   private static class ClusterSummaryStandardScheme extends 
StandardScheme<ClusterSummary> {
+ 
+     public void read(org.apache.thrift.protocol.TProtocol iprot, 
ClusterSummary struct) throws org.apache.thrift.TException {
+       org.apache.thrift.protocol.TField schemeField;
+       iprot.readStructBegin();
+       while (true)
+       {
+         schemeField = iprot.readFieldBegin();
+         if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+           break;
+         }
+         switch (schemeField.id) {
+           case 1: // SUPERVISORS
+             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+               {
+                 org.apache.thrift.protocol.TList _list74 = 
iprot.readListBegin();
+                 struct.supervisors = new 
ArrayList<SupervisorSummary>(_list74.size);
+                 SupervisorSummary _elem75;
+                 for (int _i76 = 0; _i76 < _list74.size; ++_i76)
+                 {
+                   _elem75 = new SupervisorSummary();
+                   _elem75.read(iprot);
+                   struct.supervisors.add(_elem75);
+                 }
+                 iprot.readListEnd();
+               }
+               struct.set_supervisors_isSet(true);
+             } else { 
+               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
+             }
+             break;
 -          case 2: // NIMBUS_UPTIME_SECS
 -            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
 -              struct.nimbus_uptime_secs = iprot.readI32();
 -              struct.set_nimbus_uptime_secs_isSet(true);
 -            } else { 
 -              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
 -            }
 -            break;
+           case 3: // TOPOLOGIES
+             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+               {
+                 org.apache.thrift.protocol.TList _list77 = 
iprot.readListBegin();
+                 struct.topologies = new 
ArrayList<TopologySummary>(_list77.size);
+                 TopologySummary _elem78;
+                 for (int _i79 = 0; _i79 < _list77.size; ++_i79)
+                 {
+                   _elem78 = new TopologySummary();
+                   _elem78.read(iprot);
+                   struct.topologies.add(_elem78);
+                 }
+                 iprot.readListEnd();
+               }
+               struct.set_topologies_isSet(true);
+             } else { 
+               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
+             }
+             break;
++          case 4: // NIMBUSES
++            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
++              {
++                org.apache.thrift.protocol.TList _list80 = 
iprot.readListBegin();
++                struct.nimbuses = new ArrayList<NimbusSummary>(_list80.size);
++                NimbusSummary _elem81;
++                for (int _i82 = 0; _i82 < _list80.size; ++_i82)
++                {
++                  _elem81 = new NimbusSummary();
++                  _elem81.read(iprot);
++                  struct.nimbuses.add(_elem81);
++                }
++                iprot.readListEnd();
++              }
++              struct.set_nimbuses_isSet(true);
++            } else { 
++              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
++            }
++            break;
+           default:
+             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
+         }
+         iprot.readFieldEnd();
+       }
+       iprot.readStructEnd();
+       struct.validate();
+     }
+ 
+     public void write(org.apache.thrift.protocol.TProtocol oprot, 
ClusterSummary struct) throws org.apache.thrift.TException {
+       struct.validate();
+ 
+       oprot.writeStructBegin(STRUCT_DESC);
+       if (struct.supervisors != null) {
+         oprot.writeFieldBegin(SUPERVISORS_FIELD_DESC);
+         {
+           oprot.writeListBegin(new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
struct.supervisors.size()));
 -          for (SupervisorSummary _iter80 : struct.supervisors)
++          for (SupervisorSummary _iter83 : struct.supervisors)
+           {
 -            _iter80.write(oprot);
++            _iter83.write(oprot);
+           }
+           oprot.writeListEnd();
+         }
+         oprot.writeFieldEnd();
+       }
 -      oprot.writeFieldBegin(NIMBUS_UPTIME_SECS_FIELD_DESC);
 -      oprot.writeI32(struct.nimbus_uptime_secs);
 -      oprot.writeFieldEnd();
+       if (struct.topologies != null) {
+         oprot.writeFieldBegin(TOPOLOGIES_FIELD_DESC);
+         {
+           oprot.writeListBegin(new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
struct.topologies.size()));
 -          for (TopologySummary _iter81 : struct.topologies)
++          for (TopologySummary _iter84 : struct.topologies)
++          {
++            _iter84.write(oprot);
++          }
++          oprot.writeListEnd();
++        }
++        oprot.writeFieldEnd();
++      }
++      if (struct.nimbuses != null) {
++        oprot.writeFieldBegin(NIMBUSES_FIELD_DESC);
++        {
++          oprot.writeListBegin(new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
struct.nimbuses.size()));
++          for (NimbusSummary _iter85 : struct.nimbuses)
+           {
 -            _iter81.write(oprot);
++            _iter85.write(oprot);
+           }
+           oprot.writeListEnd();
+         }
+         oprot.writeFieldEnd();
+       }
+       oprot.writeFieldStop();
+       oprot.writeStructEnd();
+     }
+ 
+   }
+ 
+   private static class ClusterSummaryTupleSchemeFactory implements 
SchemeFactory {
+     public ClusterSummaryTupleScheme getScheme() {
+       return new ClusterSummaryTupleScheme();
+     }
+   }
+ 
+   private static class ClusterSummaryTupleScheme extends 
TupleScheme<ClusterSummary> {
+ 
+     @Override
+     public void write(org.apache.thrift.protocol.TProtocol prot, 
ClusterSummary struct) throws org.apache.thrift.TException {
+       TTupleProtocol oprot = (TTupleProtocol) prot;
+       {
+         oprot.writeI32(struct.supervisors.size());
 -        for (SupervisorSummary _iter82 : struct.supervisors)
++        for (SupervisorSummary _iter86 : struct.supervisors)
+         {
 -          _iter82.write(oprot);
++          _iter86.write(oprot);
+         }
+       }
 -      oprot.writeI32(struct.nimbus_uptime_secs);
+       {
+         oprot.writeI32(struct.topologies.size());
 -        for (TopologySummary _iter83 : struct.topologies)
++        for (TopologySummary _iter87 : struct.topologies)
++        {
++          _iter87.write(oprot);
++        }
++      }
++      {
++        oprot.writeI32(struct.nimbuses.size());
++        for (NimbusSummary _iter88 : struct.nimbuses)
+         {
 -          _iter83.write(oprot);
++          _iter88.write(oprot);
+         }
+       }
+     }
+ 
+     @Override
+     public void read(org.apache.thrift.protocol.TProtocol prot, 
ClusterSummary struct) throws org.apache.thrift.TException {
+       TTupleProtocol iprot = (TTupleProtocol) prot;
+       {
 -        org.apache.thrift.protocol.TList _list84 = new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
iprot.readI32());
 -        struct.supervisors = new ArrayList<SupervisorSummary>(_list84.size);
 -        SupervisorSummary _elem85;
 -        for (int _i86 = 0; _i86 < _list84.size; ++_i86)
++        org.apache.thrift.protocol.TList _list89 = new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
iprot.readI32());
++        struct.supervisors = new ArrayList<SupervisorSummary>(_list89.size);
++        SupervisorSummary _elem90;
++        for (int _i91 = 0; _i91 < _list89.size; ++_i91)
+         {
 -          _elem85 = new SupervisorSummary();
 -          _elem85.read(iprot);
 -          struct.supervisors.add(_elem85);
++          _elem90 = new SupervisorSummary();
++          _elem90.read(iprot);
++          struct.supervisors.add(_elem90);
+         }
+       }
+       struct.set_supervisors_isSet(true);
 -      struct.nimbus_uptime_secs = iprot.readI32();
 -      struct.set_nimbus_uptime_secs_isSet(true);
+       {
 -        org.apache.thrift.protocol.TList _list87 = new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
iprot.readI32());
 -        struct.topologies = new ArrayList<TopologySummary>(_list87.size);
 -        TopologySummary _elem88;
 -        for (int _i89 = 0; _i89 < _list87.size; ++_i89)
++        org.apache.thrift.protocol.TList _list92 = new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
iprot.readI32());
++        struct.topologies = new ArrayList<TopologySummary>(_list92.size);
++        TopologySummary _elem93;
++        for (int _i94 = 0; _i94 < _list92.size; ++_i94)
+         {
 -          _elem88 = new TopologySummary();
 -          _elem88.read(iprot);
 -          struct.topologies.add(_elem88);
++          _elem93 = new TopologySummary();
++          _elem93.read(iprot);
++          struct.topologies.add(_elem93);
+         }
+       }
+       struct.set_topologies_isSet(true);
++      {
++        org.apache.thrift.protocol.TList _list95 = new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
iprot.readI32());
++        struct.nimbuses = new ArrayList<NimbusSummary>(_list95.size);
++        NimbusSummary _elem96;
++        for (int _i97 = 0; _i97 < _list95.size; ++_i97)
++        {
++          _elem96 = new NimbusSummary();
++          _elem96.read(iprot);
++          struct.nimbuses.add(_elem96);
++        }
++      }
++      struct.set_nimbuses_isSet(true);
+     }
+   }
+ 
  }
  

http://git-wip-us.apache.org/repos/asf/storm/blob/85e4d5ef/storm-core/src/jvm/backtype/storm/generated/TopologyInfo.java
----------------------------------------------------------------------
diff --cc storm-core/src/jvm/backtype/storm/generated/TopologyInfo.java
index 1ba5c5f,6e1a503..37c5c63
--- a/storm-core/src/jvm/backtype/storm/generated/TopologyInfo.java
+++ b/storm-core/src/jvm/backtype/storm/generated/TopologyInfo.java
@@@ -38,7 -50,9 +50,9 @@@ import javax.annotation.Generated
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  
- public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, 
TopologyInfo._Fields>, java.io.Serializable, Cloneable {
+ @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
 -@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-2-6")
++@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = 
"2015-3-2")
+ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, 
TopologyInfo._Fields>, java.io.Serializable, Cloneable, 
Comparable<TopologyInfo> {
    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new 
org.apache.thrift.protocol.TStruct("TopologyInfo");
  
    private static final org.apache.thrift.protocol.TField ID_FIELD_DESC = new 
org.apache.thrift.protocol.TField("id", 
org.apache.thrift.protocol.TType.STRING, (short)1);
@@@ -49,17 -63,21 +63,23 @@@
    private static final org.apache.thrift.protocol.TField ERRORS_FIELD_DESC = 
new org.apache.thrift.protocol.TField("errors", 
org.apache.thrift.protocol.TType.MAP, (short)6);
    private static final org.apache.thrift.protocol.TField 
SCHED_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("sched_status", 
org.apache.thrift.protocol.TType.STRING, (short)513);
    private static final org.apache.thrift.protocol.TField OWNER_FIELD_DESC = 
new org.apache.thrift.protocol.TField("owner", 
org.apache.thrift.protocol.TType.STRING, (short)514);
 +  private static final org.apache.thrift.protocol.TField 
REPLICATION_COUNT_FIELD_DESC = new 
org.apache.thrift.protocol.TField("replication_count", 
org.apache.thrift.protocol.TType.I32, (short)515);
  
+   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = 
new HashMap<Class<? extends IScheme>, SchemeFactory>();
+   static {
+     schemes.put(StandardScheme.class, new 
TopologyInfoStandardSchemeFactory());
+     schemes.put(TupleScheme.class, new TopologyInfoTupleSchemeFactory());
+   }
+ 
    private String id; // required
    private String name; // required
    private int uptime_secs; // required
    private List<ExecutorSummary> executors; // required
    private String status; // required
    private Map<String,List<ErrorInfo>> errors; // required
-   private String sched_status; // required
-   private String owner; // required
-   private int replication_count; // required
+   private String sched_status; // optional
+   private String owner; // optional
++  private int replication_count; // optional
  
    /** The set of fields this struct contains, along with convenience methods 
for finding and manipulating them. */
    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@@ -145,9 -160,8 +165,9 @@@
  
    // isset id assignments
    private static final int __UPTIME_SECS_ISSET_ID = 0;
 +  private static final int __REPLICATION_COUNT_ISSET_ID = 1;
-   private BitSet __isset_bit_vector = new BitSet(2);
- 
+   private byte __isset_bitfield = 0;
 -  private static final _Fields optionals[] = 
{_Fields.SCHED_STATUS,_Fields.OWNER};
++  private static final _Fields optionals[] = 
{_Fields.SCHED_STATUS,_Fields.OWNER,_Fields.REPLICATION_COUNT};
    public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> 
metaDataMap;
    static {
      Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new 
EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@@ -476,28 -484,6 +495,28 @@@
      }
    }
  
 +  public int get_replication_count() {
 +    return this.replication_count;
 +  }
 +
 +  public void set_replication_count(int replication_count) {
 +    this.replication_count = replication_count;
 +    set_replication_count_isSet(true);
 +  }
 +
 +  public void unset_replication_count() {
-     __isset_bit_vector.clear(__REPLICATION_COUNT_ISSET_ID);
++    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, 
__REPLICATION_COUNT_ISSET_ID);
 +  }
 +
 +  /** Returns true if field replication_count is set (has been assigned a 
value) and false otherwise */
 +  public boolean is_set_replication_count() {
-     return __isset_bit_vector.get(__REPLICATION_COUNT_ISSET_ID);
++    return EncodingUtils.testBit(__isset_bitfield, 
__REPLICATION_COUNT_ISSET_ID);
 +  }
 +
 +  public void set_replication_count_isSet(boolean value) {
-     __isset_bit_vector.set(__REPLICATION_COUNT_ISSET_ID, value);
++    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, 
__REPLICATION_COUNT_ISSET_ID, value);
 +  }
 +
    public void setFieldValue(_Fields field, Object value) {
      switch (field) {
      case ID:
@@@ -736,56 -700,52 +755,57 @@@
  
    @Override
    public int hashCode() {
-     HashCodeBuilder builder = new HashCodeBuilder();
+     List<Object> list = new ArrayList<Object>();
  
      boolean present_id = true && (is_set_id());
-     builder.append(present_id);
+     list.add(present_id);
      if (present_id)
-       builder.append(id);
+       list.add(id);
  
      boolean present_name = true && (is_set_name());
-     builder.append(present_name);
+     list.add(present_name);
      if (present_name)
-       builder.append(name);
+       list.add(name);
  
      boolean present_uptime_secs = true;
-     builder.append(present_uptime_secs);
+     list.add(present_uptime_secs);
      if (present_uptime_secs)
-       builder.append(uptime_secs);
+       list.add(uptime_secs);
  
      boolean present_executors = true && (is_set_executors());
-     builder.append(present_executors);
+     list.add(present_executors);
      if (present_executors)
-       builder.append(executors);
+       list.add(executors);
  
      boolean present_status = true && (is_set_status());
-     builder.append(present_status);
+     list.add(present_status);
      if (present_status)
-       builder.append(status);
+       list.add(status);
  
      boolean present_errors = true && (is_set_errors());
-     builder.append(present_errors);
+     list.add(present_errors);
      if (present_errors)
-       builder.append(errors);
+       list.add(errors);
  
      boolean present_sched_status = true && (is_set_sched_status());
-     builder.append(present_sched_status);
+     list.add(present_sched_status);
      if (present_sched_status)
-       builder.append(sched_status);
+       list.add(sched_status);
  
      boolean present_owner = true && (is_set_owner());
-     builder.append(present_owner);
+     list.add(present_owner);
      if (present_owner)
-       builder.append(owner);
+       list.add(owner);
  
 +    boolean present_replication_count = true && (is_set_replication_count());
-     builder.append(present_replication_count);
++    list.add(present_replication_count);
 +    if (present_replication_count)
-       builder.append(replication_count);
++      list.add(replication_count);
 +
-     return builder.toHashCode();
+     return list.hashCode();
    }
  
+   @Override
    public int compareTo(TopologyInfo other) {
      if (!getClass().equals(other.getClass())) {
        return getClass().getName().compareTo(other.getClass().getName());
@@@ -874,16 -833,6 +893,16 @@@
          return lastComparison;
        }
      }
-     lastComparison = 
Boolean.valueOf(is_set_replication_count()).compareTo(typedOther.is_set_replication_count());
++    lastComparison = 
Boolean.valueOf(is_set_replication_count()).compareTo(other.is_set_replication_count());
 +    if (lastComparison != 0) {
 +      return lastComparison;
 +    }
 +    if (is_set_replication_count()) {
-       lastComparison = 
org.apache.thrift.TBaseHelper.compareTo(this.replication_count, 
typedOther.replication_count);
++      lastComparison = 
org.apache.thrift.TBaseHelper.compareTo(this.replication_count, 
other.replication_count);
 +      if (lastComparison != 0) {
 +        return lastComparison;
 +      }
 +    }
      return 0;
    }
  
@@@ -1210,5 -967,314 +1043,337 @@@
      }
    }
  
+   private static class TopologyInfoStandardSchemeFactory implements 
SchemeFactory {
+     public TopologyInfoStandardScheme getScheme() {
+       return new TopologyInfoStandardScheme();
+     }
+   }
+ 
+   private static class TopologyInfoStandardScheme extends 
StandardScheme<TopologyInfo> {
+ 
+     public void read(org.apache.thrift.protocol.TProtocol iprot, TopologyInfo 
struct) throws org.apache.thrift.TException {
+       org.apache.thrift.protocol.TField schemeField;
+       iprot.readStructBegin();
+       while (true)
+       {
+         schemeField = iprot.readFieldBegin();
+         if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+           break;
+         }
+         switch (schemeField.id) {
+           case 1: // ID
+             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+               struct.id = iprot.readString();
+               struct.set_id_isSet(true);
+             } else { 
+               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
+             }
+             break;
+           case 2: // NAME
+             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+               struct.name = iprot.readString();
+               struct.set_name_isSet(true);
+             } else { 
+               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
+             }
+             break;
+           case 3: // UPTIME_SECS
+             if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+               struct.uptime_secs = iprot.readI32();
+               struct.set_uptime_secs_isSet(true);
+             } else { 
+               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
+             }
+             break;
+           case 4: // EXECUTORS
+             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+               {
 -                org.apache.thrift.protocol.TList _list290 = 
iprot.readListBegin();
 -                struct.executors = new 
ArrayList<ExecutorSummary>(_list290.size);
 -                ExecutorSummary _elem291;
 -                for (int _i292 = 0; _i292 < _list290.size; ++_i292)
++                org.apache.thrift.protocol.TList _list298 = 
iprot.readListBegin();
++                struct.executors = new 
ArrayList<ExecutorSummary>(_list298.size);
++                ExecutorSummary _elem299;
++                for (int _i300 = 0; _i300 < _list298.size; ++_i300)
+                 {
 -                  _elem291 = new ExecutorSummary();
 -                  _elem291.read(iprot);
 -                  struct.executors.add(_elem291);
++                  _elem299 = new ExecutorSummary();
++                  _elem299.read(iprot);
++                  struct.executors.add(_elem299);
+                 }
+                 iprot.readListEnd();
+               }
+               struct.set_executors_isSet(true);
+             } else { 
+               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
+             }
+             break;
+           case 5: // STATUS
+             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+               struct.status = iprot.readString();
+               struct.set_status_isSet(true);
+             } else { 
+               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
+             }
+             break;
+           case 6: // ERRORS
+             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
+               {
 -                org.apache.thrift.protocol.TMap _map293 = 
iprot.readMapBegin();
 -                struct.errors = new 
HashMap<String,List<ErrorInfo>>(2*_map293.size);
 -                String _key294;
 -                List<ErrorInfo> _val295;
 -                for (int _i296 = 0; _i296 < _map293.size; ++_i296)
++                org.apache.thrift.protocol.TMap _map301 = 
iprot.readMapBegin();
++                struct.errors = new 
HashMap<String,List<ErrorInfo>>(2*_map301.size);
++                String _key302;
++                List<ErrorInfo> _val303;
++                for (int _i304 = 0; _i304 < _map301.size; ++_i304)
+                 {
 -                  _key294 = iprot.readString();
++                  _key302 = iprot.readString();
+                   {
 -                    org.apache.thrift.protocol.TList _list297 = 
iprot.readListBegin();
 -                    _val295 = new ArrayList<ErrorInfo>(_list297.size);
 -                    ErrorInfo _elem298;
 -                    for (int _i299 = 0; _i299 < _list297.size; ++_i299)
++                    org.apache.thrift.protocol.TList _list305 = 
iprot.readListBegin();
++                    _val303 = new ArrayList<ErrorInfo>(_list305.size);
++                    ErrorInfo _elem306;
++                    for (int _i307 = 0; _i307 < _list305.size; ++_i307)
+                     {
 -                      _elem298 = new ErrorInfo();
 -                      _elem298.read(iprot);
 -                      _val295.add(_elem298);
++                      _elem306 = new ErrorInfo();
++                      _elem306.read(iprot);
++                      _val303.add(_elem306);
+                     }
+                     iprot.readListEnd();
+                   }
 -                  struct.errors.put(_key294, _val295);
++                  struct.errors.put(_key302, _val303);
+                 }
+                 iprot.readMapEnd();
+               }
+               struct.set_errors_isSet(true);
+             } else { 
+               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
+             }
+             break;
+           case 513: // SCHED_STATUS
+             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+               struct.sched_status = iprot.readString();
+               struct.set_sched_status_isSet(true);
+             } else { 
+               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
+             }
+             break;
+           case 514: // OWNER
+             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+               struct.owner = iprot.readString();
+               struct.set_owner_isSet(true);
+             } else { 
+               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
+             }
+             break;
++          case 515: // REPLICATION_COUNT
++            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
++              struct.replication_count = iprot.readI32();
++              struct.set_replication_count_isSet(true);
++            } else { 
++              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
++            }
++            break;
+           default:
+             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
+         }
+         iprot.readFieldEnd();
+       }
+       iprot.readStructEnd();
+       struct.validate();
+     }
+ 
+     public void write(org.apache.thrift.protocol.TProtocol oprot, 
TopologyInfo struct) throws org.apache.thrift.TException {
+       struct.validate();
+ 
+       oprot.writeStructBegin(STRUCT_DESC);
+       if (struct.id != null) {
+         oprot.writeFieldBegin(ID_FIELD_DESC);
+         oprot.writeString(struct.id);
+         oprot.writeFieldEnd();
+       }
+       if (struct.name != null) {
+         oprot.writeFieldBegin(NAME_FIELD_DESC);
+         oprot.writeString(struct.name);
+         oprot.writeFieldEnd();
+       }
+       oprot.writeFieldBegin(UPTIME_SECS_FIELD_DESC);
+       oprot.writeI32(struct.uptime_secs);
+       oprot.writeFieldEnd();
+       if (struct.executors != null) {
+         oprot.writeFieldBegin(EXECUTORS_FIELD_DESC);
+         {
+           oprot.writeListBegin(new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
struct.executors.size()));
 -          for (ExecutorSummary _iter300 : struct.executors)
++          for (ExecutorSummary _iter308 : struct.executors)
+           {
 -            _iter300.write(oprot);
++            _iter308.write(oprot);
+           }
+           oprot.writeListEnd();
+         }
+         oprot.writeFieldEnd();
+       }
+       if (struct.status != null) {
+         oprot.writeFieldBegin(STATUS_FIELD_DESC);
+         oprot.writeString(struct.status);
+         oprot.writeFieldEnd();
+       }
+       if (struct.errors != null) {
+         oprot.writeFieldBegin(ERRORS_FIELD_DESC);
+         {
+           oprot.writeMapBegin(new 
org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, 
org.apache.thrift.protocol.TType.LIST, struct.errors.size()));
 -          for (Map.Entry<String, List<ErrorInfo>> _iter301 : 
struct.errors.entrySet())
++          for (Map.Entry<String, List<ErrorInfo>> _iter309 : 
struct.errors.entrySet())
+           {
 -            oprot.writeString(_iter301.getKey());
++            oprot.writeString(_iter309.getKey());
+             {
 -              oprot.writeListBegin(new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
_iter301.getValue().size()));
 -              for (ErrorInfo _iter302 : _iter301.getValue())
++              oprot.writeListBegin(new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
_iter309.getValue().size()));
++              for (ErrorInfo _iter310 : _iter309.getValue())
+               {
 -                _iter302.write(oprot);
++                _iter310.write(oprot);
+               }
+               oprot.writeListEnd();
+             }
+           }
+           oprot.writeMapEnd();
+         }
+         oprot.writeFieldEnd();
+       }
+       if (struct.sched_status != null) {
+         if (struct.is_set_sched_status()) {
+           oprot.writeFieldBegin(SCHED_STATUS_FIELD_DESC);
+           oprot.writeString(struct.sched_status);
+           oprot.writeFieldEnd();
+         }
+       }
+       if (struct.owner != null) {
+         if (struct.is_set_owner()) {
+           oprot.writeFieldBegin(OWNER_FIELD_DESC);
+           oprot.writeString(struct.owner);
+           oprot.writeFieldEnd();
+         }
+       }
++      if (struct.is_set_replication_count()) {
++        oprot.writeFieldBegin(REPLICATION_COUNT_FIELD_DESC);
++        oprot.writeI32(struct.replication_count);
++        oprot.writeFieldEnd();
++      }
+       oprot.writeFieldStop();
+       oprot.writeStructEnd();
+     }
+ 
+   }
+ 
+   private static class TopologyInfoTupleSchemeFactory implements 
SchemeFactory {
+     public TopologyInfoTupleScheme getScheme() {
+       return new TopologyInfoTupleScheme();
+     }
+   }
+ 
+   private static class TopologyInfoTupleScheme extends 
TupleScheme<TopologyInfo> {
+ 
+     @Override
+     public void write(org.apache.thrift.protocol.TProtocol prot, TopologyInfo 
struct) throws org.apache.thrift.TException {
+       TTupleProtocol oprot = (TTupleProtocol) prot;
+       oprot.writeString(struct.id);
+       oprot.writeString(struct.name);
+       oprot.writeI32(struct.uptime_secs);
+       {
+         oprot.writeI32(struct.executors.size());
 -        for (ExecutorSummary _iter303 : struct.executors)
++        for (ExecutorSummary _iter311 : struct.executors)
+         {
 -          _iter303.write(oprot);
++          _iter311.write(oprot);
+         }
+       }
+       oprot.writeString(struct.status);
+       {
+         oprot.writeI32(struct.errors.size());
 -        for (Map.Entry<String, List<ErrorInfo>> _iter304 : 
struct.errors.entrySet())
++        for (Map.Entry<String, List<ErrorInfo>> _iter312 : 
struct.errors.entrySet())
+         {
 -          oprot.writeString(_iter304.getKey());
++          oprot.writeString(_iter312.getKey());
+           {
 -            oprot.writeI32(_iter304.getValue().size());
 -            for (ErrorInfo _iter305 : _iter304.getValue())
++            oprot.writeI32(_iter312.getValue().size());
++            for (ErrorInfo _iter313 : _iter312.getValue())
+             {
 -              _iter305.write(oprot);
++              _iter313.write(oprot);
+             }
+           }
+         }
+       }
+       BitSet optionals = new BitSet();
+       if (struct.is_set_sched_status()) {
+         optionals.set(0);
+       }
+       if (struct.is_set_owner()) {
+         optionals.set(1);
+       }
 -      oprot.writeBitSet(optionals, 2);
++      if (struct.is_set_replication_count()) {
++        optionals.set(2);
++      }
++      oprot.writeBitSet(optionals, 3);
+       if (struct.is_set_sched_status()) {
+         oprot.writeString(struct.sched_status);
+       }
+       if (struct.is_set_owner()) {
+         oprot.writeString(struct.owner);
+       }
++      if (struct.is_set_replication_count()) {
++        oprot.writeI32(struct.replication_count);
++      }
+     }
+ 
+     @Override
+     public void read(org.apache.thrift.protocol.TProtocol prot, TopologyInfo 
struct) throws org.apache.thrift.TException {
+       TTupleProtocol iprot = (TTupleProtocol) prot;
+       struct.id = iprot.readString();
+       struct.set_id_isSet(true);
+       struct.name = iprot.readString();
+       struct.set_name_isSet(true);
+       struct.uptime_secs = iprot.readI32();
+       struct.set_uptime_secs_isSet(true);
+       {
 -        org.apache.thrift.protocol.TList _list306 = new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
iprot.readI32());
 -        struct.executors = new ArrayList<ExecutorSummary>(_list306.size);
 -        ExecutorSummary _elem307;
 -        for (int _i308 = 0; _i308 < _list306.size; ++_i308)
++        org.apache.thrift.protocol.TList _list314 = new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
iprot.readI32());
++        struct.executors = new ArrayList<ExecutorSummary>(_list314.size);
++        ExecutorSummary _elem315;
++        for (int _i316 = 0; _i316 < _list314.size; ++_i316)
+         {
 -          _elem307 = new ExecutorSummary();
 -          _elem307.read(iprot);
 -          struct.executors.add(_elem307);
++          _elem315 = new ExecutorSummary();
++          _elem315.read(iprot);
++          struct.executors.add(_elem315);
+         }
+       }
+       struct.set_executors_isSet(true);
+       struct.status = iprot.readString();
+       struct.set_status_isSet(true);
+       {
 -        org.apache.thrift.protocol.TMap _map309 = new 
org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, 
org.apache.thrift.protocol.TType.LIST, iprot.readI32());
 -        struct.errors = new HashMap<String,List<ErrorInfo>>(2*_map309.size);
 -        String _key310;
 -        List<ErrorInfo> _val311;
 -        for (int _i312 = 0; _i312 < _map309.size; ++_i312)
++        org.apache.thrift.protocol.TMap _map317 = new 
org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, 
org.apache.thrift.protocol.TType.LIST, iprot.readI32());
++        struct.errors = new HashMap<String,List<ErrorInfo>>(2*_map317.size);
++        String _key318;
++        List<ErrorInfo> _val319;
++        for (int _i320 = 0; _i320 < _map317.size; ++_i320)
+         {
 -          _key310 = iprot.readString();
++          _key318 = iprot.readString();
+           {
 -            org.apache.thrift.protocol.TList _list313 = new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
iprot.readI32());
 -            _val311 = new ArrayList<ErrorInfo>(_list313.size);
 -            ErrorInfo _elem314;
 -            for (int _i315 = 0; _i315 < _list313.size; ++_i315)
++            org.apache.thrift.protocol.TList _list321 = new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
iprot.readI32());
++            _val319 = new ArrayList<ErrorInfo>(_list321.size);
++            ErrorInfo _elem322;
++            for (int _i323 = 0; _i323 < _list321.size; ++_i323)
+             {
 -              _elem314 = new ErrorInfo();
 -              _elem314.read(iprot);
 -              _val311.add(_elem314);
++              _elem322 = new ErrorInfo();
++              _elem322.read(iprot);
++              _val319.add(_elem322);
+             }
+           }
 -          struct.errors.put(_key310, _val311);
++          struct.errors.put(_key318, _val319);
+         }
+       }
+       struct.set_errors_isSet(true);
 -      BitSet incoming = iprot.readBitSet(2);
++      BitSet incoming = iprot.readBitSet(3);
+       if (incoming.get(0)) {
+         struct.sched_status = iprot.readString();
+         struct.set_sched_status_isSet(true);
+       }
+       if (incoming.get(1)) {
+         struct.owner = iprot.readString();
+         struct.set_owner_isSet(true);
+       }
++      if (incoming.get(2)) {
++        struct.replication_count = iprot.readI32();
++        struct.set_replication_count_isSet(true);
++      }
+     }
+   }
+ 
  }
  

Reply via email to