You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@storm.apache.org by sr...@apache.org on 2015/09/21 19:40:48 UTC
[03/24] storm git commit: Nimbus debug api first cut
Nimbus debug api first cut
1. Added debug flag to storm base (currently boolean)
2. Added a new nimbus api for setting the flag
3. UI changes to enable and disable debugging at the topology level.
Project: http://git-wip-us.apache.org/repos/asf/storm/repo
Commit: http://git-wip-us.apache.org/repos/asf/storm/commit/26b02706
Tree: http://git-wip-us.apache.org/repos/asf/storm/tree/26b02706
Diff: http://git-wip-us.apache.org/repos/asf/storm/diff/26b02706
Branch: refs/heads/master
Commit: 26b02706201e3dc92b1dff8398795ae78d6753b6
Parents: a924e9e
Author: Arun Mahadevan <ai...@hortonworks.com>
Authored: Thu Aug 6 18:26:38 2015 +0530
Committer: Arun Mahadevan <ai...@hortonworks.com>
Committed: Mon Aug 10 14:21:43 2015 +0530
----------------------------------------------------------------------
storm-core/src/clj/backtype/storm/cluster.clj | 3 +-
storm-core/src/clj/backtype/storm/converter.clj | 6 +-
.../src/clj/backtype/storm/daemon/common.clj | 2 +-
.../src/clj/backtype/storm/daemon/executor.clj | 5 +-
.../src/clj/backtype/storm/daemon/nimbus.clj | 16 +-
.../src/clj/backtype/storm/daemon/worker.clj | 43 +-
storm-core/src/clj/backtype/storm/ui/core.clj | 15 +-
.../jvm/backtype/storm/generated/Nimbus.java | 1083 +++++++++++++++++-
.../jvm/backtype/storm/generated/StormBase.java | 109 +-
.../backtype/storm/generated/TopologyInfo.java | 99 +-
storm-core/src/storm.thrift | 3 +
storm-core/src/ui/public/js/script.js | 13 +-
.../templates/topology-page-template.html | 2 +
storm-core/src/ui/public/topology.html | 2 +-
.../test/clj/backtype/storm/nimbus_test.clj | 11 +-
15 files changed, 1369 insertions(+), 43 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/storm/blob/26b02706/storm-core/src/clj/backtype/storm/cluster.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/backtype/storm/cluster.clj b/storm-core/src/clj/backtype/storm/cluster.clj
index 1a13f7b..1070237 100644
--- a/storm-core/src/clj/backtype/storm/cluster.clj
+++ b/storm-core/src/clj/backtype/storm/cluster.clj
@@ -240,7 +240,8 @@
(when cb
(cb id))))
-(defn- maybe-deserialize
+;; public for stubbing in nimbus_test
+(defn maybe-deserialize
[ser clazz]
(when ser
(Utils/deserialize ser clazz)))
http://git-wip-us.apache.org/repos/asf/storm/blob/26b02706/storm-core/src/clj/backtype/storm/converter.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/backtype/storm/converter.clj b/storm-core/src/clj/backtype/storm/converter.clj
index 63868cd..a429c51 100644
--- a/storm-core/src/clj/backtype/storm/converter.clj
+++ b/storm-core/src/clj/backtype/storm/converter.clj
@@ -151,7 +151,8 @@
(.set_component_executors (map-val int (:component->executors storm-base)))
(.set_owner (:owner storm-base))
(.set_topology_action_options (thriftify-topology-action-options storm-base))
- (.set_prev_status (convert-to-status-from-symbol (:prev-status storm-base)))))
+ (.set_prev_status (convert-to-status-from-symbol (:prev-status storm-base)))
+ (.set_debug (:debug storm-base))))
(defn clojurify-storm-base [^StormBase storm-base]
(if storm-base
@@ -163,7 +164,8 @@
(into {} (.get_component_executors storm-base))
(.get_owner storm-base)
(clojurify-topology-action-options (.get_topology_action_options storm-base))
- (convert-to-symbol-from-status (.get_prev_status storm-base)))))
+ (convert-to-symbol-from-status (.get_prev_status storm-base))
+ (.is_debug storm-base))))
(defn thriftify-stats [stats]
(if stats
http://git-wip-us.apache.org/repos/asf/storm/blob/26b02706/storm-core/src/clj/backtype/storm/daemon/common.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/backtype/storm/daemon/common.clj b/storm-core/src/clj/backtype/storm/daemon/common.clj
index 7868eb1..55cecee 100644
--- a/storm-core/src/clj/backtype/storm/daemon/common.clj
+++ b/storm-core/src/clj/backtype/storm/daemon/common.clj
@@ -55,7 +55,7 @@
;; component->executors is a map from spout/bolt id to number of executors for that component
-(defrecord StormBase [storm-name launch-time-secs status num-workers component->executors owner topology-action-options prev-status])
+(defrecord StormBase [storm-name launch-time-secs status num-workers component->executors owner topology-action-options prev-status debug])
(defrecord SupervisorInfo [time-secs hostname assignment-id used-ports meta scheduler-meta uptime-secs version])
http://git-wip-us.apache.org/repos/asf/storm/blob/26b02706/storm-core/src/clj/backtype/storm/daemon/executor.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/backtype/storm/daemon/executor.clj b/storm-core/src/clj/backtype/storm/daemon/executor.clj
index 757ee48..b3e356c 100644
--- a/storm-core/src/clj/backtype/storm/daemon/executor.clj
+++ b/storm-core/src/clj/backtype/storm/daemon/executor.clj
@@ -240,6 +240,7 @@
:conf (:conf worker)
:shared-executor-data (HashMap.)
:storm-active-atom (:storm-active-atom worker)
+ :storm-debug-atom (:storm-debug-atom worker)
:batch-transfer-queue batch-transfer->worker
:transfer-fn (mk-executor-transfer-fn batch-transfer->worker storm-conf)
:suicide-fn (:suicide-fn worker)
@@ -533,7 +534,7 @@
overflow-buffer)
))
; Send data to the eventlogger.
- (if has-eventloggers?
+ (if (and has-eventloggers? @(:storm-debug-atom executor-data))
(task/send-unanchored
task-data
EVENTLOGGER-STREAM-ID
@@ -746,7 +747,7 @@
(MessageId/makeId anchors-to-ids))
overflow-buffer)))
; send the data to the eventlogger
- (if has-eventloggers?
+ (if (and has-eventloggers? @(:storm-debug-atom executor-data))
(task/send-unanchored task-data
EVENTLOGGER-STREAM-ID
[component-id (System/currentTimeMillis) values] ;TODO: add more metadata to the vector
http://git-wip-us.apache.org/repos/asf/storm/blob/26b02706/storm-core/src/clj/backtype/storm/daemon/nimbus.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/backtype/storm/daemon/nimbus.clj b/storm-core/src/clj/backtype/storm/daemon/nimbus.clj
index fd11046..3e39d44 100644
--- a/storm-core/src/clj/backtype/storm/daemon/nimbus.clj
+++ b/storm-core/src/clj/backtype/storm/daemon/nimbus.clj
@@ -754,7 +754,8 @@
num-executors
(storm-conf TOPOLOGY-SUBMITTER-USER)
nil
- nil))))
+ nil
+ false))))
;; Master:
;; job submit:
@@ -1160,6 +1161,18 @@
(check-authorization! nimbus storm-name topology-conf "deactivate"))
(transition-name! nimbus storm-name :inactivate true))
+ ;; TODO
+ (debug [this storm-name enable?]
+ (let [storm-cluster-state (:storm-cluster-state nimbus)
+ storm-id (get-storm-id storm-cluster-state storm-name)
+ storm-base-updates {:debug enable?}]
+;; (check-authorization! nimbus storm-name topology-conf "debug")
+;; (when-not storm-id
+;; (throw (NotAliveException. storm-name)))
+ (log-message "Nimbus setting debug to " enable? " for storm-name " storm-name " storm-id " storm-id)
+ (locking (:submit-lock nimbus)
+ (.update-storm! storm-cluster-state storm-id storm-base-updates))))
+
(uploadNewCredentials [this storm-name credentials]
(let [storm-cluster-state (:storm-cluster-state nimbus)
storm-id (get-storm-id storm-cluster-state storm-name)
@@ -1339,6 +1352,7 @@
executor-summaries
(extract-status-str base)
errors
+ (:debug base)
)]
(when-let [owner (:owner base)] (.set_owner topo-info owner))
(when-let [sched-status (.get @(:id->sched-status nimbus) storm-id)] (.set_sched_status topo-info sched-status))
http://git-wip-us.apache.org/repos/asf/storm/blob/26b02706/storm-core/src/clj/backtype/storm/daemon/worker.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/backtype/storm/daemon/worker.clj b/storm-core/src/clj/backtype/storm/daemon/worker.clj
index 2e64fb4..f947637 100644
--- a/storm-core/src/clj/backtype/storm/daemon/worker.clj
+++ b/storm-core/src/clj/backtype/storm/daemon/worker.clj
@@ -42,7 +42,7 @@
(log-message "Reading Assignments.")
(let [assignment (:executor->node+port (.assignment-info storm-cluster-state storm-id nil))]
(doall
- (concat
+ (concat
[Constants/SYSTEM_EXECUTOR_ID]
(mapcat (fn [[executor loc]]
(if (= loc [assignment-id port])
@@ -63,7 +63,7 @@
:time-secs (current-time-secs)
}]
;; do the zookeeper heartbeat
- (.worker-heartbeat! (:storm-cluster-state worker) (:storm-id worker) (:assignment-id worker) (:port worker) zk-hb)
+ (.worker-heartbeat! (:storm-cluster-state worker) (:storm-id worker) (:assignment-id worker) (:port worker) zk-hb)
))
(defn do-heartbeat [worker]
@@ -126,7 +126,7 @@
remoteMap (HashMap.)]
(fast-list-iter [[task tuple :as pair] tuple-batch]
(if (local-tasks task)
- (.add local pair)
+ (.add local pair)
;;Using java objects directly to avoid performance issues in java code
(do
@@ -141,7 +141,7 @@
(disruptor/publish transfer-queue remoteMap)
))]
(if try-serialize-local
- (do
+ (do
(log-warn "WILL TRY TO SERIALIZE ALL TUPLES (Turn off " TOPOLOGY-TESTING-ALWAYS-TRY-SERIALIZE " for production)")
(fn [^KryoTupleSerializer serializer tuple-batch]
(assert-can-serialize serializer tuple-batch)
@@ -198,7 +198,7 @@
(storm-conf TOPOLOGY-DISRUPTOR-WAIT-TIMEOUT-MILLIS)
:wait-strategy (storm-conf TOPOLOGY-DISRUPTOR-WAIT-STRATEGY))
executor-receive-queue-map (mk-receive-queue-map storm-conf executors)
-
+
receive-queue-map (->> executor-receive-queue-map
(mapcat (fn [[e queue]] (for [t (executor-id->tasks e)] [t queue])))
(into {}))
@@ -223,6 +223,7 @@
;; and spout and bolt will be activated.
:worker-active-flag (atom false)
:storm-active-atom (atom false)
+ :storm-debug-atom (atom false)
:executors executors
:task-ids (->> receive-queue-map keys (map int) sort)
:storm-conf storm-conf
@@ -290,7 +291,7 @@
(filter-key (complement (-> worker :task-ids set))))
needed-connections (-> needed-assignment vals set)
needed-tasks (-> needed-assignment keys)
-
+
current-connections (set (keys @(:cached-node+port->socket worker)))
new-connections (set/difference needed-connections current-connections)
remove-connections (set/difference current-connections needed-connections)]
@@ -316,7 +317,7 @@
(:cached-node+port->socket worker)
#(HashMap. (apply dissoc (into {} %1) %&))
remove-connections)
-
+
)))))
(defn refresh-storm-active
@@ -324,11 +325,11 @@
(refresh-storm-active worker (fn [& ignored] (schedule (:refresh-active-timer worker) 0 (partial refresh-storm-active worker)))))
([worker callback]
(let [base (.storm-base (:storm-cluster-state worker) (:storm-id worker) callback)]
- (reset!
- (:storm-active-atom worker)
- (and (= :active (-> base :status :type)) @(:worker-active-flag worker))
- ))
- ))
+ (reset!
+ (:storm-active-atom worker)
+ (and (= :active (-> base :status :type)) @(:worker-active-flag worker)))
+ (reset! (:storm-debug-atom worker) (-> base :debug))
+ (log-message "debug flag is " @(:storm-debug-atom worker)))))
;; TODO: consider having a max batch size besides what disruptor does automagically to prevent latency issues
(defn mk-transfer-tuples-handler [worker]
@@ -341,7 +342,7 @@
(disruptor/clojure-handler
(fn [packets _ batch-end?]
(.add drainer packets)
-
+
(when batch-end?
(read-locked endpoint-socket-lock
(let [node+port->socket @node+port->socket
@@ -423,7 +424,7 @@
initial-credentials (.credentials storm-cluster-state storm-id nil)
auto-creds (AuthUtils/GetAutoCredentials storm-conf)
subject (AuthUtils/populateSubject nil auto-creds initial-credentials)]
- (Subject/doAs subject (reify PrivilegedExceptionAction
+ (Subject/doAs subject (reify PrivilegedExceptionAction
(run [this]
(let [worker (worker-data conf shared-mq-context storm-id assignment-id port worker-id storm-conf cluster-state storm-cluster-state)
heartbeat-fn #(do-heartbeat worker)
@@ -452,8 +453,8 @@
_ (reset! executors (dofor [e (:executors worker)] (executor/mk-executor worker e initial-credentials)))
transfer-tuples (mk-transfer-tuples-handler worker)
-
- transfer-thread (disruptor/consume-loop* (:transfer-queue worker) transfer-tuples)
+
+ transfer-thread (disruptor/consume-loop* (:transfer-queue worker) transfer-tuples)
shutdown* (fn []
(log-message "Shutting down worker " storm-id " " assignment-id " " port)
(doseq [[_ socket] @(:cached-node+port->socket worker)]
@@ -467,7 +468,7 @@
(log-message "Shutting down executors")
(doseq [executor @executors] (.shutdown executor))
(log-message "Shut down executors")
-
+
;;this is fine because the only time this is shared is when it's a local context,
;;in which case it's a noop
(.term ^IContext (:mq-context worker))
@@ -483,11 +484,11 @@
(cancel-timer (:refresh-active-timer worker))
(cancel-timer (:executor-heartbeat-timer worker))
(cancel-timer (:user-timer worker))
-
+
(close-resources worker)
-
+
;; TODO: here need to invoke the "shutdown" method of WorkerHook
-
+
(.remove-worker-heartbeat! (:storm-cluster-state worker) storm-id assignment-id port)
(log-message "Disconnecting from storm cluster state context")
(.disconnect (:storm-cluster-state worker))
@@ -535,7 +536,7 @@
:distributed [conf]
(fn [] (exit-process! 1 "Worker died")))
-(defn -main [storm-id assignment-id port-str worker-id]
+(defn -main [storm-id assignment-id port-str worker-id]
(let [conf (read-storm-config)]
(setup-default-uncaught-exception-handler)
(validate-distributed-mode! conf)
http://git-wip-us.apache.org/repos/asf/storm/blob/26b02706/storm-core/src/clj/backtype/storm/ui/core.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/backtype/storm/ui/core.clj b/storm-core/src/clj/backtype/storm/ui/core.clj
index 0541c3a..ea7b048 100644
--- a/storm-core/src/clj/backtype/storm/ui/core.clj
+++ b/storm-core/src/clj/backtype/storm/ui/core.clj
@@ -724,7 +724,8 @@
"tasksTotal" (sum-tasks executors)
"workersTotal" (count workers)
"executorsTotal" (count executors)
- "schedulerInfo" (.get_sched_status summ)}))
+ "schedulerInfo" (.get_sched_status summ)
+ "debug" (.is_debug summ)}))
(defn spout-summary-json [topology-id id stats window]
(let [times (stats-times (:emitted stats))
@@ -1029,6 +1030,18 @@
(.deactivate nimbus name)
(log-message "Deactivating topology '" name "'")))
(json-response (topology-op-response id "deactivate") (m "callback")))
+ (POST "/api/v1/topology/:id/debug/:action" [:as {:keys [cookies servlet-request]} id action & m]
+ (assert-authorized-user servlet-request "debug" (topology-config id))
+ (with-nimbus nimbus
+ (let [tplg (->> (doto
+ (GetInfoOptions.)
+ (.set_num_err_choice NumErrorsChoice/NONE))
+ (.getTopologyInfoWithOpts ^Nimbus$Client nimbus id))
+ name (.get_name tplg)
+ enable? (= "enable" action)]
+ (.debug nimbus name enable?)
+ (log-message "Debug topology '" name "' [" action "]")))
+ (json-response (topology-op-response id (str "debug/" action)) (m "callback")))
(POST "/api/v1/topology/:id/rebalance/:wait-time" [:as {:keys [cookies servlet-request]} id wait-time & m]
(assert-authorized-user servlet-request "rebalance" (topology-config id))
(with-nimbus nimbus
http://git-wip-us.apache.org/repos/asf/storm/blob/26b02706/storm-core/src/jvm/backtype/storm/generated/Nimbus.java
----------------------------------------------------------------------
diff --git a/storm-core/src/jvm/backtype/storm/generated/Nimbus.java b/storm-core/src/jvm/backtype/storm/generated/Nimbus.java
index cfc4496..b535e69 100644
--- a/storm-core/src/jvm/backtype/storm/generated/Nimbus.java
+++ b/storm-core/src/jvm/backtype/storm/generated/Nimbus.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-4-20")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-6")
public class Nimbus {
public interface Iface {
@@ -70,6 +70,8 @@ public class Nimbus {
public void rebalance(String name, RebalanceOptions options) throws NotAliveException, InvalidTopologyException, AuthorizationException, org.apache.thrift.TException;
+ public void debug(String name, boolean enable) throws NotAliveException, AuthorizationException, org.apache.thrift.TException;
+
public void uploadNewCredentials(String name, Credentials creds) throws NotAliveException, InvalidTopologyException, AuthorizationException, org.apache.thrift.TException;
public String beginFileUpload() throws AuthorizationException, org.apache.thrift.TException;
@@ -124,6 +126,8 @@ public class Nimbus {
public void rebalance(String name, RebalanceOptions options, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+ public void debug(String name, boolean enable, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
public void uploadNewCredentials(String name, Credentials creds, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
public void beginFileUpload(org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
@@ -372,6 +376,33 @@ public class Nimbus {
return;
}
+ public void debug(String name, boolean enable) throws NotAliveException, AuthorizationException, org.apache.thrift.TException
+ {
+ send_debug(name, enable);
+ recv_debug();
+ }
+
+ public void send_debug(String name, boolean enable) throws org.apache.thrift.TException
+ {
+ debug_args args = new debug_args();
+ args.set_name(name);
+ args.set_enable(enable);
+ sendBase("debug", args);
+ }
+
+ public void recv_debug() throws NotAliveException, AuthorizationException, org.apache.thrift.TException
+ {
+ debug_result result = new debug_result();
+ receiveBase(result, "debug");
+ if (result.e != null) {
+ throw result.e;
+ }
+ if (result.aze != null) {
+ throw result.aze;
+ }
+ return;
+ }
+
public void uploadNewCredentials(String name, Credentials creds) throws NotAliveException, InvalidTopologyException, AuthorizationException, org.apache.thrift.TException
{
send_uploadNewCredentials(name, creds);
@@ -991,6 +1022,41 @@ public class Nimbus {
}
}
+ public void debug(String name, boolean enable, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+ checkReady();
+ debug_call method_call = new debug_call(name, enable, resultHandler, this, ___protocolFactory, ___transport);
+ this.___currentMethod = method_call;
+ ___manager.call(method_call);
+ }
+
+ public static class debug_call extends org.apache.thrift.async.TAsyncMethodCall {
+ private String name;
+ private boolean enable;
+ public debug_call(String name, boolean enable, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+ super(client, protocolFactory, transport, resultHandler, false);
+ this.name = name;
+ this.enable = enable;
+ }
+
+ public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+ prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("debug", org.apache.thrift.protocol.TMessageType.CALL, 0));
+ debug_args args = new debug_args();
+ args.set_name(name);
+ args.set_enable(enable);
+ args.write(prot);
+ prot.writeMessageEnd();
+ }
+
+ public void getResult() throws NotAliveException, AuthorizationException, org.apache.thrift.TException {
+ if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+ throw new IllegalStateException("Method call not finished!");
+ }
+ org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+ org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+ (new Client(prot)).recv_debug();
+ }
+ }
+
public void uploadNewCredentials(String name, Credentials creds, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
checkReady();
uploadNewCredentials_call method_call = new uploadNewCredentials_call(name, creds, resultHandler, this, ___protocolFactory, ___transport);
@@ -1427,6 +1493,7 @@ public class Nimbus {
processMap.put("activate", new activate());
processMap.put("deactivate", new deactivate());
processMap.put("rebalance", new rebalance());
+ processMap.put("debug", new debug());
processMap.put("uploadNewCredentials", new uploadNewCredentials());
processMap.put("beginFileUpload", new beginFileUpload());
processMap.put("uploadChunk", new uploadChunk());
@@ -1631,6 +1698,32 @@ public class Nimbus {
}
}
+ public static class debug<I extends Iface> extends org.apache.thrift.ProcessFunction<I, debug_args> {
+ public debug() {
+ super("debug");
+ }
+
+ public debug_args getEmptyArgsInstance() {
+ return new debug_args();
+ }
+
+ protected boolean isOneway() {
+ return false;
+ }
+
+ public debug_result getResult(I iface, debug_args args) throws org.apache.thrift.TException {
+ debug_result result = new debug_result();
+ try {
+ iface.debug(args.name, args.enable);
+ } catch (NotAliveException e) {
+ result.e = e;
+ } catch (AuthorizationException aze) {
+ result.aze = aze;
+ }
+ return result;
+ }
+ }
+
public static class uploadNewCredentials<I extends Iface> extends org.apache.thrift.ProcessFunction<I, uploadNewCredentials_args> {
public uploadNewCredentials() {
super("uploadNewCredentials");
@@ -1977,6 +2070,7 @@ public class Nimbus {
processMap.put("activate", new activate());
processMap.put("deactivate", new deactivate());
processMap.put("rebalance", new rebalance());
+ processMap.put("debug", new debug());
processMap.put("uploadNewCredentials", new uploadNewCredentials());
processMap.put("beginFileUpload", new beginFileUpload());
processMap.put("uploadChunk", new uploadChunk());
@@ -2435,6 +2529,67 @@ public class Nimbus {
}
}
+ public static class debug<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, debug_args, Void> {
+ public debug() {
+ super("debug");
+ }
+
+ public debug_args getEmptyArgsInstance() {
+ return new debug_args();
+ }
+
+ public AsyncMethodCallback<Void> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+ final org.apache.thrift.AsyncProcessFunction fcall = this;
+ return new AsyncMethodCallback<Void>() {
+ public void onComplete(Void o) {
+ debug_result result = new debug_result();
+ try {
+ fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+ return;
+ } catch (Exception e) {
+ LOGGER.error("Exception writing to internal frame buffer", e);
+ }
+ fb.close();
+ }
+ public void onError(Exception e) {
+ byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+ org.apache.thrift.TBase msg;
+ debug_result result = new debug_result();
+ if (e instanceof NotAliveException) {
+ result.e = (NotAliveException) e;
+ result.set_e_isSet(true);
+ msg = result;
+ }
+ else if (e instanceof AuthorizationException) {
+ result.aze = (AuthorizationException) e;
+ result.set_aze_isSet(true);
+ msg = result;
+ }
+ else
+ {
+ msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+ msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+ }
+ try {
+ fcall.sendResponse(fb,msg,msgType,seqid);
+ return;
+ } catch (Exception ex) {
+ LOGGER.error("Exception writing to internal frame buffer", ex);
+ }
+ fb.close();
+ }
+ };
+ }
+
+ protected boolean isOneway() {
+ return false;
+ }
+
+ public void start(I iface, debug_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws TException {
+ iface.debug(args.name, args.enable,resultHandler);
+ }
+ }
+
public static class uploadNewCredentials<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, uploadNewCredentials_args, Void> {
public uploadNewCredentials() {
super("uploadNewCredentials");
@@ -10257,6 +10412,932 @@ public class Nimbus {
}
+ public static class debug_args implements org.apache.thrift.TBase<debug_args, debug_args._Fields>, java.io.Serializable, Cloneable, Comparable<debug_args> {
+ private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("debug_args");
+
+ private static final org.apache.thrift.protocol.TField NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("name", org.apache.thrift.protocol.TType.STRING, (short)1);
+ private static final org.apache.thrift.protocol.TField ENABLE_FIELD_DESC = new org.apache.thrift.protocol.TField("enable", org.apache.thrift.protocol.TType.BOOL, (short)2);
+
+ private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+ static {
+ schemes.put(StandardScheme.class, new debug_argsStandardSchemeFactory());
+ schemes.put(TupleScheme.class, new debug_argsTupleSchemeFactory());
+ }
+
+ private String name; // required
+ private boolean enable; // 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 {
+ NAME((short)1, "name"),
+ ENABLE((short)2, "enable");
+
+ private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+ static {
+ for (_Fields field : EnumSet.allOf(_Fields.class)) {
+ byName.put(field.getFieldName(), field);
+ }
+ }
+
+ /**
+ * Find the _Fields constant that matches fieldId, or null if its not found.
+ */
+ public static _Fields findByThriftId(int fieldId) {
+ switch(fieldId) {
+ case 1: // NAME
+ return NAME;
+ case 2: // ENABLE
+ return ENABLE;
+ default:
+ return null;
+ }
+ }
+
+ /**
+ * Find the _Fields constant that matches fieldId, throwing an exception
+ * if it is not found.
+ */
+ public static _Fields findByThriftIdOrThrow(int fieldId) {
+ _Fields fields = findByThriftId(fieldId);
+ if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+ return fields;
+ }
+
+ /**
+ * Find the _Fields constant that matches name, or null if its not found.
+ */
+ public static _Fields findByName(String name) {
+ return byName.get(name);
+ }
+
+ private final short _thriftId;
+ private final String _fieldName;
+
+ _Fields(short thriftId, String fieldName) {
+ _thriftId = thriftId;
+ _fieldName = fieldName;
+ }
+
+ public short getThriftFieldId() {
+ return _thriftId;
+ }
+
+ public String getFieldName() {
+ return _fieldName;
+ }
+ }
+
+ // isset id assignments
+ private static final int __ENABLE_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);
+ tmpMap.put(_Fields.NAME, new org.apache.thrift.meta_data.FieldMetaData("name", org.apache.thrift.TFieldRequirementType.DEFAULT,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+ tmpMap.put(_Fields.ENABLE, new org.apache.thrift.meta_data.FieldMetaData("enable", org.apache.thrift.TFieldRequirementType.DEFAULT,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+ metaDataMap = Collections.unmodifiableMap(tmpMap);
+ org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(debug_args.class, metaDataMap);
+ }
+
+ public debug_args() {
+ }
+
+ public debug_args(
+ String name,
+ boolean enable)
+ {
+ this();
+ this.name = name;
+ this.enable = enable;
+ set_enable_isSet(true);
+ }
+
+ /**
+ * Performs a deep copy on <i>other</i>.
+ */
+ public debug_args(debug_args other) {
+ __isset_bitfield = other.__isset_bitfield;
+ if (other.is_set_name()) {
+ this.name = other.name;
+ }
+ this.enable = other.enable;
+ }
+
+ public debug_args deepCopy() {
+ return new debug_args(this);
+ }
+
+ @Override
+ public void clear() {
+ this.name = null;
+ set_enable_isSet(false);
+ this.enable = false;
+ }
+
+ public String get_name() {
+ return this.name;
+ }
+
+ public void set_name(String name) {
+ this.name = name;
+ }
+
+ public void unset_name() {
+ this.name = null;
+ }
+
+ /** Returns true if field name is set (has been assigned a value) and false otherwise */
+ public boolean is_set_name() {
+ return this.name != null;
+ }
+
+ public void set_name_isSet(boolean value) {
+ if (!value) {
+ this.name = null;
+ }
+ }
+
+ public boolean is_enable() {
+ return this.enable;
+ }
+
+ public void set_enable(boolean enable) {
+ this.enable = enable;
+ set_enable_isSet(true);
+ }
+
+ public void unset_enable() {
+ __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ENABLE_ISSET_ID);
+ }
+
+ /** Returns true if field enable is set (has been assigned a value) and false otherwise */
+ public boolean is_set_enable() {
+ return EncodingUtils.testBit(__isset_bitfield, __ENABLE_ISSET_ID);
+ }
+
+ public void set_enable_isSet(boolean value) {
+ __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ENABLE_ISSET_ID, value);
+ }
+
+ public void setFieldValue(_Fields field, Object value) {
+ switch (field) {
+ case NAME:
+ if (value == null) {
+ unset_name();
+ } else {
+ set_name((String)value);
+ }
+ break;
+
+ case ENABLE:
+ if (value == null) {
+ unset_enable();
+ } else {
+ set_enable((Boolean)value);
+ }
+ break;
+
+ }
+ }
+
+ public Object getFieldValue(_Fields field) {
+ switch (field) {
+ case NAME:
+ return get_name();
+
+ case ENABLE:
+ return Boolean.valueOf(is_enable());
+
+ }
+ throw new IllegalStateException();
+ }
+
+ /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+ public boolean isSet(_Fields field) {
+ if (field == null) {
+ throw new IllegalArgumentException();
+ }
+
+ switch (field) {
+ case NAME:
+ return is_set_name();
+ case ENABLE:
+ return is_set_enable();
+ }
+ throw new IllegalStateException();
+ }
+
+ @Override
+ public boolean equals(Object that) {
+ if (that == null)
+ return false;
+ if (that instanceof debug_args)
+ return this.equals((debug_args)that);
+ return false;
+ }
+
+ public boolean equals(debug_args that) {
+ if (that == null)
+ return false;
+
+ boolean this_present_name = true && this.is_set_name();
+ boolean that_present_name = true && that.is_set_name();
+ if (this_present_name || that_present_name) {
+ if (!(this_present_name && that_present_name))
+ return false;
+ if (!this.name.equals(that.name))
+ return false;
+ }
+
+ boolean this_present_enable = true;
+ boolean that_present_enable = true;
+ if (this_present_enable || that_present_enable) {
+ if (!(this_present_enable && that_present_enable))
+ return false;
+ if (this.enable != that.enable)
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ List<Object> list = new ArrayList<Object>();
+
+ boolean present_name = true && (is_set_name());
+ list.add(present_name);
+ if (present_name)
+ list.add(name);
+
+ boolean present_enable = true;
+ list.add(present_enable);
+ if (present_enable)
+ list.add(enable);
+
+ return list.hashCode();
+ }
+
+ @Override
+ public int compareTo(debug_args other) {
+ if (!getClass().equals(other.getClass())) {
+ return getClass().getName().compareTo(other.getClass().getName());
+ }
+
+ int lastComparison = 0;
+
+ lastComparison = Boolean.valueOf(is_set_name()).compareTo(other.is_set_name());
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ if (is_set_name()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.name, other.name);
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ }
+ lastComparison = Boolean.valueOf(is_set_enable()).compareTo(other.is_set_enable());
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ if (is_set_enable()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.enable, other.enable);
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ }
+ return 0;
+ }
+
+ public _Fields fieldForId(int fieldId) {
+ return _Fields.findByThriftId(fieldId);
+ }
+
+ public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+ schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+ }
+
+ public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+ schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder("debug_args(");
+ boolean first = true;
+
+ sb.append("name:");
+ if (this.name == null) {
+ sb.append("null");
+ } else {
+ sb.append(this.name);
+ }
+ first = false;
+ if (!first) sb.append(", ");
+ sb.append("enable:");
+ sb.append(this.enable);
+ first = false;
+ sb.append(")");
+ return sb.toString();
+ }
+
+ public void validate() throws org.apache.thrift.TException {
+ // check for required fields
+ // check for sub-struct validity
+ }
+
+ private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+ try {
+ write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+ } catch (org.apache.thrift.TException te) {
+ throw new java.io.IOException(te);
+ }
+ }
+
+ private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+ try {
+ // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+ __isset_bitfield = 0;
+ read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+ } catch (org.apache.thrift.TException te) {
+ throw new java.io.IOException(te);
+ }
+ }
+
+ private static class debug_argsStandardSchemeFactory implements SchemeFactory {
+ public debug_argsStandardScheme getScheme() {
+ return new debug_argsStandardScheme();
+ }
+ }
+
+ private static class debug_argsStandardScheme extends StandardScheme<debug_args> {
+
+ public void read(org.apache.thrift.protocol.TProtocol iprot, debug_args 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: // 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 2: // ENABLE
+ if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+ struct.enable = iprot.readBool();
+ struct.set_enable_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, debug_args struct) throws org.apache.thrift.TException {
+ struct.validate();
+
+ oprot.writeStructBegin(STRUCT_DESC);
+ if (struct.name != null) {
+ oprot.writeFieldBegin(NAME_FIELD_DESC);
+ oprot.writeString(struct.name);
+ oprot.writeFieldEnd();
+ }
+ oprot.writeFieldBegin(ENABLE_FIELD_DESC);
+ oprot.writeBool(struct.enable);
+ oprot.writeFieldEnd();
+ oprot.writeFieldStop();
+ oprot.writeStructEnd();
+ }
+
+ }
+
+ private static class debug_argsTupleSchemeFactory implements SchemeFactory {
+ public debug_argsTupleScheme getScheme() {
+ return new debug_argsTupleScheme();
+ }
+ }
+
+ private static class debug_argsTupleScheme extends TupleScheme<debug_args> {
+
+ @Override
+ public void write(org.apache.thrift.protocol.TProtocol prot, debug_args struct) throws org.apache.thrift.TException {
+ TTupleProtocol oprot = (TTupleProtocol) prot;
+ BitSet optionals = new BitSet();
+ if (struct.is_set_name()) {
+ optionals.set(0);
+ }
+ if (struct.is_set_enable()) {
+ optionals.set(1);
+ }
+ oprot.writeBitSet(optionals, 2);
+ if (struct.is_set_name()) {
+ oprot.writeString(struct.name);
+ }
+ if (struct.is_set_enable()) {
+ oprot.writeBool(struct.enable);
+ }
+ }
+
+ @Override
+ public void read(org.apache.thrift.protocol.TProtocol prot, debug_args struct) throws org.apache.thrift.TException {
+ TTupleProtocol iprot = (TTupleProtocol) prot;
+ BitSet incoming = iprot.readBitSet(2);
+ if (incoming.get(0)) {
+ struct.name = iprot.readString();
+ struct.set_name_isSet(true);
+ }
+ if (incoming.get(1)) {
+ struct.enable = iprot.readBool();
+ struct.set_enable_isSet(true);
+ }
+ }
+ }
+
+ }
+
+ public static class debug_result implements org.apache.thrift.TBase<debug_result, debug_result._Fields>, java.io.Serializable, Cloneable, Comparable<debug_result> {
+ private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("debug_result");
+
+ private static final org.apache.thrift.protocol.TField E_FIELD_DESC = new org.apache.thrift.protocol.TField("e", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+ private static final org.apache.thrift.protocol.TField AZE_FIELD_DESC = new org.apache.thrift.protocol.TField("aze", org.apache.thrift.protocol.TType.STRUCT, (short)2);
+
+ private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+ static {
+ schemes.put(StandardScheme.class, new debug_resultStandardSchemeFactory());
+ schemes.put(TupleScheme.class, new debug_resultTupleSchemeFactory());
+ }
+
+ private NotAliveException e; // required
+ private AuthorizationException aze; // 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 {
+ E((short)1, "e"),
+ AZE((short)2, "aze");
+
+ private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+ static {
+ for (_Fields field : EnumSet.allOf(_Fields.class)) {
+ byName.put(field.getFieldName(), field);
+ }
+ }
+
+ /**
+ * Find the _Fields constant that matches fieldId, or null if its not found.
+ */
+ public static _Fields findByThriftId(int fieldId) {
+ switch(fieldId) {
+ case 1: // E
+ return E;
+ case 2: // AZE
+ return AZE;
+ default:
+ return null;
+ }
+ }
+
+ /**
+ * Find the _Fields constant that matches fieldId, throwing an exception
+ * if it is not found.
+ */
+ public static _Fields findByThriftIdOrThrow(int fieldId) {
+ _Fields fields = findByThriftId(fieldId);
+ if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+ return fields;
+ }
+
+ /**
+ * Find the _Fields constant that matches name, or null if its not found.
+ */
+ public static _Fields findByName(String name) {
+ return byName.get(name);
+ }
+
+ private final short _thriftId;
+ private final String _fieldName;
+
+ _Fields(short thriftId, String fieldName) {
+ _thriftId = thriftId;
+ _fieldName = fieldName;
+ }
+
+ public short getThriftFieldId() {
+ return _thriftId;
+ }
+
+ public String getFieldName() {
+ return _fieldName;
+ }
+ }
+
+ // isset id assignments
+ 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);
+ tmpMap.put(_Fields.E, new org.apache.thrift.meta_data.FieldMetaData("e", org.apache.thrift.TFieldRequirementType.DEFAULT,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
+ tmpMap.put(_Fields.AZE, new org.apache.thrift.meta_data.FieldMetaData("aze", org.apache.thrift.TFieldRequirementType.DEFAULT,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
+ metaDataMap = Collections.unmodifiableMap(tmpMap);
+ org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(debug_result.class, metaDataMap);
+ }
+
+ public debug_result() {
+ }
+
+ public debug_result(
+ NotAliveException e,
+ AuthorizationException aze)
+ {
+ this();
+ this.e = e;
+ this.aze = aze;
+ }
+
+ /**
+ * Performs a deep copy on <i>other</i>.
+ */
+ public debug_result(debug_result other) {
+ if (other.is_set_e()) {
+ this.e = new NotAliveException(other.e);
+ }
+ if (other.is_set_aze()) {
+ this.aze = new AuthorizationException(other.aze);
+ }
+ }
+
+ public debug_result deepCopy() {
+ return new debug_result(this);
+ }
+
+ @Override
+ public void clear() {
+ this.e = null;
+ this.aze = null;
+ }
+
+ public NotAliveException get_e() {
+ return this.e;
+ }
+
+ public void set_e(NotAliveException e) {
+ this.e = e;
+ }
+
+ public void unset_e() {
+ this.e = null;
+ }
+
+ /** Returns true if field e is set (has been assigned a value) and false otherwise */
+ public boolean is_set_e() {
+ return this.e != null;
+ }
+
+ public void set_e_isSet(boolean value) {
+ if (!value) {
+ this.e = null;
+ }
+ }
+
+ public AuthorizationException get_aze() {
+ return this.aze;
+ }
+
+ public void set_aze(AuthorizationException aze) {
+ this.aze = aze;
+ }
+
+ public void unset_aze() {
+ this.aze = null;
+ }
+
+ /** Returns true if field aze is set (has been assigned a value) and false otherwise */
+ public boolean is_set_aze() {
+ return this.aze != null;
+ }
+
+ public void set_aze_isSet(boolean value) {
+ if (!value) {
+ this.aze = null;
+ }
+ }
+
+ public void setFieldValue(_Fields field, Object value) {
+ switch (field) {
+ case E:
+ if (value == null) {
+ unset_e();
+ } else {
+ set_e((NotAliveException)value);
+ }
+ break;
+
+ case AZE:
+ if (value == null) {
+ unset_aze();
+ } else {
+ set_aze((AuthorizationException)value);
+ }
+ break;
+
+ }
+ }
+
+ public Object getFieldValue(_Fields field) {
+ switch (field) {
+ case E:
+ return get_e();
+
+ case AZE:
+ return get_aze();
+
+ }
+ throw new IllegalStateException();
+ }
+
+ /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+ public boolean isSet(_Fields field) {
+ if (field == null) {
+ throw new IllegalArgumentException();
+ }
+
+ switch (field) {
+ case E:
+ return is_set_e();
+ case AZE:
+ return is_set_aze();
+ }
+ throw new IllegalStateException();
+ }
+
+ @Override
+ public boolean equals(Object that) {
+ if (that == null)
+ return false;
+ if (that instanceof debug_result)
+ return this.equals((debug_result)that);
+ return false;
+ }
+
+ public boolean equals(debug_result that) {
+ if (that == null)
+ return false;
+
+ boolean this_present_e = true && this.is_set_e();
+ boolean that_present_e = true && that.is_set_e();
+ if (this_present_e || that_present_e) {
+ if (!(this_present_e && that_present_e))
+ return false;
+ if (!this.e.equals(that.e))
+ return false;
+ }
+
+ boolean this_present_aze = true && this.is_set_aze();
+ boolean that_present_aze = true && that.is_set_aze();
+ if (this_present_aze || that_present_aze) {
+ if (!(this_present_aze && that_present_aze))
+ return false;
+ if (!this.aze.equals(that.aze))
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ List<Object> list = new ArrayList<Object>();
+
+ boolean present_e = true && (is_set_e());
+ list.add(present_e);
+ if (present_e)
+ list.add(e);
+
+ boolean present_aze = true && (is_set_aze());
+ list.add(present_aze);
+ if (present_aze)
+ list.add(aze);
+
+ return list.hashCode();
+ }
+
+ @Override
+ public int compareTo(debug_result other) {
+ if (!getClass().equals(other.getClass())) {
+ return getClass().getName().compareTo(other.getClass().getName());
+ }
+
+ int lastComparison = 0;
+
+ lastComparison = Boolean.valueOf(is_set_e()).compareTo(other.is_set_e());
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ if (is_set_e()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.e, other.e);
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ }
+ lastComparison = Boolean.valueOf(is_set_aze()).compareTo(other.is_set_aze());
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ if (is_set_aze()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.aze, other.aze);
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ }
+ return 0;
+ }
+
+ public _Fields fieldForId(int fieldId) {
+ return _Fields.findByThriftId(fieldId);
+ }
+
+ public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+ schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
+ }
+
+ public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+ schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder("debug_result(");
+ boolean first = true;
+
+ sb.append("e:");
+ if (this.e == null) {
+ sb.append("null");
+ } else {
+ sb.append(this.e);
+ }
+ first = false;
+ if (!first) sb.append(", ");
+ sb.append("aze:");
+ if (this.aze == null) {
+ sb.append("null");
+ } else {
+ sb.append(this.aze);
+ }
+ first = false;
+ sb.append(")");
+ return sb.toString();
+ }
+
+ public void validate() throws org.apache.thrift.TException {
+ // check for required fields
+ // check for sub-struct validity
+ }
+
+ private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+ try {
+ write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+ } catch (org.apache.thrift.TException te) {
+ throw new java.io.IOException(te);
+ }
+ }
+
+ private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+ try {
+ read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+ } catch (org.apache.thrift.TException te) {
+ throw new java.io.IOException(te);
+ }
+ }
+
+ private static class debug_resultStandardSchemeFactory implements SchemeFactory {
+ public debug_resultStandardScheme getScheme() {
+ return new debug_resultStandardScheme();
+ }
+ }
+
+ private static class debug_resultStandardScheme extends StandardScheme<debug_result> {
+
+ public void read(org.apache.thrift.protocol.TProtocol iprot, debug_result 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: // E
+ if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+ struct.e = new NotAliveException();
+ struct.e.read(iprot);
+ struct.set_e_isSet(true);
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+ }
+ break;
+ case 2: // AZE
+ if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+ struct.aze = new AuthorizationException();
+ struct.aze.read(iprot);
+ struct.set_aze_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, debug_result struct) throws org.apache.thrift.TException {
+ struct.validate();
+
+ oprot.writeStructBegin(STRUCT_DESC);
+ if (struct.e != null) {
+ oprot.writeFieldBegin(E_FIELD_DESC);
+ struct.e.write(oprot);
+ oprot.writeFieldEnd();
+ }
+ if (struct.aze != null) {
+ oprot.writeFieldBegin(AZE_FIELD_DESC);
+ struct.aze.write(oprot);
+ oprot.writeFieldEnd();
+ }
+ oprot.writeFieldStop();
+ oprot.writeStructEnd();
+ }
+
+ }
+
+ private static class debug_resultTupleSchemeFactory implements SchemeFactory {
+ public debug_resultTupleScheme getScheme() {
+ return new debug_resultTupleScheme();
+ }
+ }
+
+ private static class debug_resultTupleScheme extends TupleScheme<debug_result> {
+
+ @Override
+ public void write(org.apache.thrift.protocol.TProtocol prot, debug_result struct) throws org.apache.thrift.TException {
+ TTupleProtocol oprot = (TTupleProtocol) prot;
+ BitSet optionals = new BitSet();
+ if (struct.is_set_e()) {
+ optionals.set(0);
+ }
+ if (struct.is_set_aze()) {
+ optionals.set(1);
+ }
+ oprot.writeBitSet(optionals, 2);
+ if (struct.is_set_e()) {
+ struct.e.write(oprot);
+ }
+ if (struct.is_set_aze()) {
+ struct.aze.write(oprot);
+ }
+ }
+
+ @Override
+ public void read(org.apache.thrift.protocol.TProtocol prot, debug_result struct) throws org.apache.thrift.TException {
+ TTupleProtocol iprot = (TTupleProtocol) prot;
+ BitSet incoming = iprot.readBitSet(2);
+ if (incoming.get(0)) {
+ struct.e = new NotAliveException();
+ struct.e.read(iprot);
+ struct.set_e_isSet(true);
+ }
+ if (incoming.get(1)) {
+ struct.aze = new AuthorizationException();
+ struct.aze.read(iprot);
+ struct.set_aze_isSet(true);
+ }
+ }
+ }
+
+ }
+
public static class uploadNewCredentials_args implements org.apache.thrift.TBase<uploadNewCredentials_args, uploadNewCredentials_args._Fields>, java.io.Serializable, Cloneable, Comparable<uploadNewCredentials_args> {
private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("uploadNewCredentials_args");
http://git-wip-us.apache.org/repos/asf/storm/blob/26b02706/storm-core/src/jvm/backtype/storm/generated/StormBase.java
----------------------------------------------------------------------
diff --git a/storm-core/src/jvm/backtype/storm/generated/StormBase.java b/storm-core/src/jvm/backtype/storm/generated/StormBase.java
index b00f072..a51ad45 100644
--- a/storm-core/src/jvm/backtype/storm/generated/StormBase.java
+++ b/storm-core/src/jvm/backtype/storm/generated/StormBase.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-3-5")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2015-8-6")
public class StormBase implements org.apache.thrift.TBase<StormBase, StormBase._Fields>, java.io.Serializable, Cloneable, Comparable<StormBase> {
private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("StormBase");
@@ -63,6 +63,7 @@ public class StormBase implements org.apache.thrift.TBase<StormBase, StormBase._
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)6);
private static final org.apache.thrift.protocol.TField TOPOLOGY_ACTION_OPTIONS_FIELD_DESC = new org.apache.thrift.protocol.TField("topology_action_options", org.apache.thrift.protocol.TType.STRUCT, (short)7);
private static final org.apache.thrift.protocol.TField PREV_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("prev_status", org.apache.thrift.protocol.TType.I32, (short)8);
+ private static final org.apache.thrift.protocol.TField DEBUG_FIELD_DESC = new org.apache.thrift.protocol.TField("debug", org.apache.thrift.protocol.TType.BOOL, (short)9);
private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
static {
@@ -78,6 +79,7 @@ public class StormBase implements org.apache.thrift.TBase<StormBase, StormBase._
private String owner; // optional
private TopologyActionOptions topology_action_options; // optional
private TopologyStatus prev_status; // optional
+ private boolean debug; // 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 {
@@ -96,7 +98,8 @@ public class StormBase implements org.apache.thrift.TBase<StormBase, StormBase._
*
* @see TopologyStatus
*/
- PREV_STATUS((short)8, "prev_status");
+ PREV_STATUS((short)8, "prev_status"),
+ DEBUG((short)9, "debug");
private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
@@ -127,6 +130,8 @@ public class StormBase implements org.apache.thrift.TBase<StormBase, StormBase._
return TOPOLOGY_ACTION_OPTIONS;
case 8: // PREV_STATUS
return PREV_STATUS;
+ case 9: // DEBUG
+ return DEBUG;
default:
return null;
}
@@ -169,8 +174,9 @@ public class StormBase implements org.apache.thrift.TBase<StormBase, StormBase._
// isset id assignments
private static final int __NUM_WORKERS_ISSET_ID = 0;
private static final int __LAUNCH_TIME_SECS_ISSET_ID = 1;
+ private static final int __DEBUG_ISSET_ID = 2;
private byte __isset_bitfield = 0;
- private static final _Fields optionals[] = {_Fields.COMPONENT_EXECUTORS,_Fields.LAUNCH_TIME_SECS,_Fields.OWNER,_Fields.TOPOLOGY_ACTION_OPTIONS,_Fields.PREV_STATUS};
+ private static final _Fields optionals[] = {_Fields.COMPONENT_EXECUTORS,_Fields.LAUNCH_TIME_SECS,_Fields.OWNER,_Fields.TOPOLOGY_ACTION_OPTIONS,_Fields.PREV_STATUS,_Fields.DEBUG};
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);
@@ -192,6 +198,8 @@ public class StormBase implements org.apache.thrift.TBase<StormBase, StormBase._
new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TopologyActionOptions.class)));
tmpMap.put(_Fields.PREV_STATUS, new org.apache.thrift.meta_data.FieldMetaData("prev_status", org.apache.thrift.TFieldRequirementType.OPTIONAL,
new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, TopologyStatus.class)));
+ tmpMap.put(_Fields.DEBUG, new org.apache.thrift.meta_data.FieldMetaData("debug", org.apache.thrift.TFieldRequirementType.OPTIONAL,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
metaDataMap = Collections.unmodifiableMap(tmpMap);
org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(StormBase.class, metaDataMap);
}
@@ -237,6 +245,7 @@ public class StormBase implements org.apache.thrift.TBase<StormBase, StormBase._
if (other.is_set_prev_status()) {
this.prev_status = other.prev_status;
}
+ this.debug = other.debug;
}
public StormBase deepCopy() {
@@ -255,6 +264,8 @@ public class StormBase implements org.apache.thrift.TBase<StormBase, StormBase._
this.owner = null;
this.topology_action_options = null;
this.prev_status = null;
+ set_debug_isSet(false);
+ this.debug = false;
}
public String get_name() {
@@ -466,6 +477,28 @@ public class StormBase implements org.apache.thrift.TBase<StormBase, StormBase._
}
}
+ public boolean is_debug() {
+ return this.debug;
+ }
+
+ public void set_debug(boolean debug) {
+ this.debug = debug;
+ set_debug_isSet(true);
+ }
+
+ public void unset_debug() {
+ __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __DEBUG_ISSET_ID);
+ }
+
+ /** Returns true if field debug is set (has been assigned a value) and false otherwise */
+ public boolean is_set_debug() {
+ return EncodingUtils.testBit(__isset_bitfield, __DEBUG_ISSET_ID);
+ }
+
+ public void set_debug_isSet(boolean value) {
+ __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DEBUG_ISSET_ID, value);
+ }
+
public void setFieldValue(_Fields field, Object value) {
switch (field) {
case NAME:
@@ -532,6 +565,14 @@ public class StormBase implements org.apache.thrift.TBase<StormBase, StormBase._
}
break;
+ case DEBUG:
+ if (value == null) {
+ unset_debug();
+ } else {
+ set_debug((Boolean)value);
+ }
+ break;
+
}
}
@@ -561,6 +602,9 @@ public class StormBase implements org.apache.thrift.TBase<StormBase, StormBase._
case PREV_STATUS:
return get_prev_status();
+ case DEBUG:
+ return Boolean.valueOf(is_debug());
+
}
throw new IllegalStateException();
}
@@ -588,6 +632,8 @@ public class StormBase implements org.apache.thrift.TBase<StormBase, StormBase._
return is_set_topology_action_options();
case PREV_STATUS:
return is_set_prev_status();
+ case DEBUG:
+ return is_set_debug();
}
throw new IllegalStateException();
}
@@ -677,6 +723,15 @@ public class StormBase implements org.apache.thrift.TBase<StormBase, StormBase._
return false;
}
+ boolean this_present_debug = true && this.is_set_debug();
+ boolean that_present_debug = true && that.is_set_debug();
+ if (this_present_debug || that_present_debug) {
+ if (!(this_present_debug && that_present_debug))
+ return false;
+ if (this.debug != that.debug)
+ return false;
+ }
+
return true;
}
@@ -724,6 +779,11 @@ public class StormBase implements org.apache.thrift.TBase<StormBase, StormBase._
if (present_prev_status)
list.add(prev_status.getValue());
+ boolean present_debug = true && (is_set_debug());
+ list.add(present_debug);
+ if (present_debug)
+ list.add(debug);
+
return list.hashCode();
}
@@ -815,6 +875,16 @@ public class StormBase implements org.apache.thrift.TBase<StormBase, StormBase._
return lastComparison;
}
}
+ lastComparison = Boolean.valueOf(is_set_debug()).compareTo(other.is_set_debug());
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ if (is_set_debug()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.debug, other.debug);
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ }
return 0;
}
@@ -900,6 +970,12 @@ public class StormBase implements org.apache.thrift.TBase<StormBase, StormBase._
}
first = false;
}
+ if (is_set_debug()) {
+ if (!first) sb.append(", ");
+ sb.append("debug:");
+ sb.append(this.debug);
+ first = false;
+ }
sb.append(")");
return sb.toString();
}
@@ -1034,6 +1110,14 @@ public class StormBase implements org.apache.thrift.TBase<StormBase, StormBase._
org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
}
break;
+ case 9: // DEBUG
+ if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+ struct.debug = iprot.readBool();
+ struct.set_debug_isSet(true);
+ } else {
+ org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+ }
+ break;
default:
org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
}
@@ -1101,6 +1185,11 @@ public class StormBase implements org.apache.thrift.TBase<StormBase, StormBase._
oprot.writeFieldEnd();
}
}
+ if (struct.is_set_debug()) {
+ oprot.writeFieldBegin(DEBUG_FIELD_DESC);
+ oprot.writeBool(struct.debug);
+ oprot.writeFieldEnd();
+ }
oprot.writeFieldStop();
oprot.writeStructEnd();
}
@@ -1137,7 +1226,10 @@ public class StormBase implements org.apache.thrift.TBase<StormBase, StormBase._
if (struct.is_set_prev_status()) {
optionals.set(4);
}
- oprot.writeBitSet(optionals, 5);
+ if (struct.is_set_debug()) {
+ optionals.set(5);
+ }
+ oprot.writeBitSet(optionals, 6);
if (struct.is_set_component_executors()) {
{
oprot.writeI32(struct.component_executors.size());
@@ -1160,6 +1252,9 @@ public class StormBase implements org.apache.thrift.TBase<StormBase, StormBase._
if (struct.is_set_prev_status()) {
oprot.writeI32(struct.prev_status.getValue());
}
+ if (struct.is_set_debug()) {
+ oprot.writeBool(struct.debug);
+ }
}
@Override
@@ -1171,7 +1266,7 @@ public class StormBase implements org.apache.thrift.TBase<StormBase, StormBase._
struct.set_status_isSet(true);
struct.num_workers = iprot.readI32();
struct.set_num_workers_isSet(true);
- BitSet incoming = iprot.readBitSet(5);
+ BitSet incoming = iprot.readBitSet(6);
if (incoming.get(0)) {
{
org.apache.thrift.protocol.TMap _map422 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.I32, iprot.readI32());
@@ -1204,6 +1299,10 @@ public class StormBase implements org.apache.thrift.TBase<StormBase, StormBase._
struct.prev_status = backtype.storm.generated.TopologyStatus.findByValue(iprot.readI32());
struct.set_prev_status_isSet(true);
}
+ if (incoming.get(5)) {
+ struct.debug = iprot.readBool();
+ struct.set_debug_isSet(true);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/storm/blob/26b02706/storm-core/src/jvm/backtype/storm/generated/TopologyInfo.java
----------------------------------------------------------------------
diff --git a/storm-core/src/jvm/backtype/storm/generated/TopologyInfo.java b/storm-core/src/jvm/backtype/storm/generated/TopologyInfo.java
index 6e1a503..76b7c83 100644
--- a/storm-core/src/jvm/backtype/storm/generated/TopologyInfo.java
+++ b/storm-core/src/jvm/backtype/storm/generated/TopologyInfo.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@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-8-6")
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");
@@ -61,6 +61,7 @@ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, Topol
private static final org.apache.thrift.protocol.TField EXECUTORS_FIELD_DESC = new org.apache.thrift.protocol.TField("executors", org.apache.thrift.protocol.TType.LIST, (short)4);
private static final org.apache.thrift.protocol.TField STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("status", org.apache.thrift.protocol.TType.STRING, (short)5);
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 DEBUG_FIELD_DESC = new org.apache.thrift.protocol.TField("debug", org.apache.thrift.protocol.TType.BOOL, (short)7);
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);
@@ -76,6 +77,7 @@ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, Topol
private List<ExecutorSummary> executors; // required
private String status; // required
private Map<String,List<ErrorInfo>> errors; // required
+ private boolean debug; // required
private String sched_status; // optional
private String owner; // optional
@@ -87,6 +89,7 @@ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, Topol
EXECUTORS((short)4, "executors"),
STATUS((short)5, "status"),
ERRORS((short)6, "errors"),
+ DEBUG((short)7, "debug"),
SCHED_STATUS((short)513, "sched_status"),
OWNER((short)514, "owner");
@@ -115,6 +118,8 @@ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, Topol
return STATUS;
case 6: // ERRORS
return ERRORS;
+ case 7: // DEBUG
+ return DEBUG;
case 513: // SCHED_STATUS
return SCHED_STATUS;
case 514: // OWNER
@@ -160,6 +165,7 @@ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, Topol
// isset id assignments
private static final int __UPTIME_SECS_ISSET_ID = 0;
+ private static final int __DEBUG_ISSET_ID = 1;
private byte __isset_bitfield = 0;
private static final _Fields optionals[] = {_Fields.SCHED_STATUS,_Fields.OWNER};
public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
@@ -181,6 +187,8 @@ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, Topol
new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING),
new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST,
new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, ErrorInfo.class)))));
+ tmpMap.put(_Fields.DEBUG, new org.apache.thrift.meta_data.FieldMetaData("debug", org.apache.thrift.TFieldRequirementType.REQUIRED,
+ new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
tmpMap.put(_Fields.SCHED_STATUS, new org.apache.thrift.meta_data.FieldMetaData("sched_status", org.apache.thrift.TFieldRequirementType.OPTIONAL,
new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
tmpMap.put(_Fields.OWNER, new org.apache.thrift.meta_data.FieldMetaData("owner", org.apache.thrift.TFieldRequirementType.OPTIONAL,
@@ -198,7 +206,8 @@ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, Topol
int uptime_secs,
List<ExecutorSummary> executors,
String status,
- Map<String,List<ErrorInfo>> errors)
+ Map<String,List<ErrorInfo>> errors,
+ boolean debug)
{
this();
this.id = id;
@@ -208,6 +217,8 @@ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, Topol
this.executors = executors;
this.status = status;
this.errors = errors;
+ this.debug = debug;
+ set_debug_isSet(true);
}
/**
@@ -250,6 +261,7 @@ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, Topol
}
this.errors = __this__errors;
}
+ this.debug = other.debug;
if (other.is_set_sched_status()) {
this.sched_status = other.sched_status;
}
@@ -271,6 +283,8 @@ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, Topol
this.executors = null;
this.status = null;
this.errors = null;
+ set_debug_isSet(false);
+ this.debug = false;
this.sched_status = null;
this.owner = null;
}
@@ -438,6 +452,28 @@ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, Topol
}
}
+ public boolean is_debug() {
+ return this.debug;
+ }
+
+ public void set_debug(boolean debug) {
+ this.debug = debug;
+ set_debug_isSet(true);
+ }
+
+ public void unset_debug() {
+ __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __DEBUG_ISSET_ID);
+ }
+
+ /** Returns true if field debug is set (has been assigned a value) and false otherwise */
+ public boolean is_set_debug() {
+ return EncodingUtils.testBit(__isset_bitfield, __DEBUG_ISSET_ID);
+ }
+
+ public void set_debug_isSet(boolean value) {
+ __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __DEBUG_ISSET_ID, value);
+ }
+
public String get_sched_status() {
return this.sched_status;
}
@@ -534,6 +570,14 @@ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, Topol
}
break;
+ case DEBUG:
+ if (value == null) {
+ unset_debug();
+ } else {
+ set_debug((Boolean)value);
+ }
+ break;
+
case SCHED_STATUS:
if (value == null) {
unset_sched_status();
@@ -573,6 +617,9 @@ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, Topol
case ERRORS:
return get_errors();
+ case DEBUG:
+ return Boolean.valueOf(is_debug());
+
case SCHED_STATUS:
return get_sched_status();
@@ -602,6 +649,8 @@ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, Topol
return is_set_status();
case ERRORS:
return is_set_errors();
+ case DEBUG:
+ return is_set_debug();
case SCHED_STATUS:
return is_set_sched_status();
case OWNER:
@@ -677,6 +726,15 @@ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, Topol
return false;
}
+ boolean this_present_debug = true;
+ boolean that_present_debug = true;
+ if (this_present_debug || that_present_debug) {
+ if (!(this_present_debug && that_present_debug))
+ return false;
+ if (this.debug != that.debug)
+ return false;
+ }
+
boolean this_present_sched_status = true && this.is_set_sched_status();
boolean that_present_sched_status = true && that.is_set_sched_status();
if (this_present_sched_status || that_present_sched_status) {
@@ -732,6 +790,11 @@ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, Topol
if (present_errors)
list.add(errors);
+ boolean present_debug = true;
+ list.add(present_debug);
+ if (present_debug)
+ list.add(debug);
+
boolean present_sched_status = true && (is_set_sched_status());
list.add(present_sched_status);
if (present_sched_status)
@@ -813,6 +876,16 @@ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, Topol
return lastComparison;
}
}
+ lastComparison = Boolean.valueOf(is_set_debug()).compareTo(other.is_set_debug());
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ if (is_set_debug()) {
+ lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.debug, other.debug);
+ if (lastComparison != 0) {
+ return lastComparison;
+ }
+ }
lastComparison = Boolean.valueOf(is_set_sched_status()).compareTo(other.is_set_sched_status());
if (lastComparison != 0) {
return lastComparison;
@@ -896,6 +969,10 @@ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, Topol
sb.append(this.errors);
}
first = false;
+ if (!first) sb.append(", ");
+ sb.append("debug:");
+ sb.append(this.debug);
+ first = false;
if (is_set_sched_status()) {
if (!first) sb.append(", ");
sb.append("sched_status:");
@@ -946,6 +1023,10 @@ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, Topol
throw new org.apache.thrift.protocol.TProtocolException("Required field 'errors' is unset! Struct:" + toString());
}
+ if (!is_set_debug()) {
+ throw new org.apache.thrift.protocol.TProtocolException("Required field 'debug' is unset! Struct:" + toString());
+ }
+
// check for sub-struct validity
}
@@ -1067,6 +1148,14 @@ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, Topol
org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
}
break;
+ case 7: // DEBUG
+ if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+ struct.debug = iprot.readBool();
+ struct.set_debug_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();
@@ -1146,6 +1235,9 @@ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, Topol
}
oprot.writeFieldEnd();
}
+ oprot.writeFieldBegin(DEBUG_FIELD_DESC);
+ oprot.writeBool(struct.debug);
+ oprot.writeFieldEnd();
if (struct.sched_status != null) {
if (struct.is_set_sched_status()) {
oprot.writeFieldBegin(SCHED_STATUS_FIELD_DESC);
@@ -1202,6 +1294,7 @@ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, Topol
}
}
}
+ oprot.writeBool(struct.debug);
BitSet optionals = new BitSet();
if (struct.is_set_sched_status()) {
optionals.set(0);
@@ -1264,6 +1357,8 @@ public class TopologyInfo implements org.apache.thrift.TBase<TopologyInfo, Topol
}
}
struct.set_errors_isSet(true);
+ struct.debug = iprot.readBool();
+ struct.set_debug_isSet(true);
BitSet incoming = iprot.readBitSet(2);
if (incoming.get(0)) {
struct.sched_status = iprot.readString();
http://git-wip-us.apache.org/repos/asf/storm/blob/26b02706/storm-core/src/storm.thrift
----------------------------------------------------------------------
diff --git a/storm-core/src/storm.thrift b/storm-core/src/storm.thrift
index a4b0b2a..e4436be 100644
--- a/storm-core/src/storm.thrift
+++ b/storm-core/src/storm.thrift
@@ -218,6 +218,7 @@ struct TopologyInfo {
4: required list<ExecutorSummary> executors;
5: required string status;
6: required map<string, list<ErrorInfo>> errors;
+ 7: required bool debug;
513: optional string sched_status;
514: optional string owner;
}
@@ -289,6 +290,7 @@ struct StormBase {
6: optional string owner;
7: optional TopologyActionOptions topology_action_options;
8: optional TopologyStatus prev_status;//currently only used during rebalance action.
+ 9: optional bool debug;
}
struct ClusterWorkerHeartbeat {
@@ -349,6 +351,7 @@ service Nimbus {
void activate(1: string name) throws (1: NotAliveException e, 2: AuthorizationException aze);
void deactivate(1: string name) throws (1: NotAliveException e, 2: AuthorizationException aze);
void rebalance(1: string name, 2: RebalanceOptions options) throws (1: NotAliveException e, 2: InvalidTopologyException ite, 3: AuthorizationException aze);
+ void debug(1: string name, 2: bool enable) throws (1: NotAliveException e, 2: AuthorizationException aze);
void uploadNewCredentials(1: string name, 2: Credentials creds) throws (1: NotAliveException e, 2: InvalidTopologyException ite, 3: AuthorizationException aze);
// need to add functions for asking about status of storms, what nodes they're running on, looking at task logs
http://git-wip-us.apache.org/repos/asf/storm/blob/26b02706/storm-core/src/ui/public/js/script.js
----------------------------------------------------------------------
diff --git a/storm-core/src/ui/public/js/script.js b/storm-core/src/ui/public/js/script.js
index abd66c1..fda17f2 100644
--- a/storm-core/src/ui/public/js/script.js
+++ b/storm-core/src/ui/public/js/script.js
@@ -81,13 +81,16 @@ function ensureInt(n) {
return isInt;
}
-function confirmAction(id, name, action, wait, defaultWait) {
+function confirmAction(id, name, action, wait, defaultWait, actionText) {
var opts = {
type:'POST',
url:'/api/v1/topology/' + id + '/' + action
};
+ if (actionText === undefined) {
+ actionText = action;
+ }
if (wait) {
- var waitSecs = prompt('Do you really want to ' + action + ' topology "' + name + '"? ' +
+ var waitSecs = prompt('Do you really want to ' + actionText + ' topology "' + name + '"? ' +
'If yes, please, specify wait time in seconds:',
defaultWait);
@@ -96,7 +99,7 @@ function confirmAction(id, name, action, wait, defaultWait) {
} else {
return false;
}
- } else if (!confirm('Do you really want to ' + action + ' topology "' + name + '"?')) {
+ } else if (!confirm('Do you really want to ' + actionText + ' topology "' + name + '"?')) {
return false;
}
@@ -146,7 +149,7 @@ function renderToggleSys(div) {
}
}
-function topologyActionJson(id, encodedId, name,status,msgTimeout) {
+function topologyActionJson(id, encodedId, name, status, msgTimeout, debug) {
var jsonData = {};
jsonData["id"] = id;
jsonData["encodedId"] = encodedId;
@@ -156,6 +159,8 @@ function topologyActionJson(id, encodedId, name,status,msgTimeout) {
jsonData["deactivateStatus"] = (status === "ACTIVE") ? "enabled" : "disabled";
jsonData["rebalanceStatus"] = (status === "ACTIVE" || status === "INACTIVE" ) ? "enabled" : "disabled";
jsonData["killStatus"] = (status !== "KILLED") ? "enabled" : "disabled";
+ jsonData["startDebugStatus"] = (status === "ACTIVE" && !debug) ? "enabled" : "disabled";
+ jsonData["stopDebugStatus"] = (status === "ACTIVE" && debug) ? "enabled" : "disabled";
return jsonData;
}
http://git-wip-us.apache.org/repos/asf/storm/blob/26b02706/storm-core/src/ui/public/templates/topology-page-template.html
----------------------------------------------------------------------
diff --git a/storm-core/src/ui/public/templates/topology-page-template.html b/storm-core/src/ui/public/templates/topology-page-template.html
index ddf89b7..cdf8ef5 100644
--- a/storm-core/src/ui/public/templates/topology-page-template.html
+++ b/storm-core/src/ui/public/templates/topology-page-template.html
@@ -344,5 +344,7 @@
<input {{deactivateStatus}} onclick="confirmAction('{{encodedId}}', '{{name}}', 'deactivate', false, 0)" type="button" value="Deactivate" class="btn btn-default">
<input {{rebalanceStatus}} onclick="confirmAction('{{encodedId}}', '{{name}}', 'rebalance', true, {{msgTimeout}})" type="button" value="Rebalance" class="btn btn-default">
<input {{killStatus}} onclick="confirmAction('{{encodedId}}', '{{name}}', 'kill', true, 30)" type="button" value="Kill" class="btn btn-default">
+ <input {{startDebugStatus}} onclick="confirmAction('{{encodedId}}', '{{name}}', 'debug/enable', false, 0, 'debug')" type="button" value="Debug" class="btn btn-default">
+ <input {{stopDebugStatus}} onclick="confirmAction('{{encodedId}}', '{{name}}', 'debug/disable', false, 0, 'stop debugging')" type="button" value="Stop Debug" class="btn btn-default">
</p>
</script>
http://git-wip-us.apache.org/repos/asf/storm/blob/26b02706/storm-core/src/ui/public/topology.html
----------------------------------------------------------------------
diff --git a/storm-core/src/ui/public/topology.html b/storm-core/src/ui/public/topology.html
index 0a1a05b..65cc107 100644
--- a/storm-core/src/ui/public/topology.html
+++ b/storm-core/src/ui/public/topology.html
@@ -132,7 +132,7 @@ $(document).ready(function() {
var topologyActions = $("#topology-actions");
var topologyVisualization = $("#topology-visualization")
var formattedConfig = formatConfigData(response["configuration"]);
- var buttonJsonData = topologyActionJson(response["id"],response["encodedId"],response["name"],response["status"],response["msgTimeout"]);
+ var buttonJsonData = topologyActionJson(response["id"],response["encodedId"],response["name"],response["status"],response["msgTimeout"],response["debug"]);
$.get("/templates/topology-page-template.html", function(template) {
topologySummary.append(Mustache.render($(template).filter("#topology-summary-template").html(),response));
topologyActions.append(Mustache.render($(template).filter("#topology-actions-template").html(),buttonJsonData));