[
https://issues.apache.org/jira/browse/STORM-1279?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15217234#comment-15217234
]
ASF GitHub Bot commented on STORM-1279:
---------------------------------------
Github user hustfxj commented on a diff in the pull request:
https://github.com/apache/storm/pull/1257#discussion_r57828359
--- Diff: storm-core/src/clj/org/apache/storm/daemon/local_supervisor.clj
---
@@ -0,0 +1,64 @@
+;; Licensed to the Apache Software Foundation (ASF) under one
+;; or more contributor license agreements. See the NOTICE file
+;; distributed with this work for additional information
+;; regarding copyright ownership. The ASF licenses this file
+;; to you under the Apache License, Version 2.0 (the
+;; "License"); you may not use this file except in compliance
+;; with the License. You may obtain a copy of the License at
+;;
+;; http://www.apache.org/licenses/LICENSE-2.0
+;;
+;; Unless required by applicable law or agreed to in writing, software
+;; distributed under the License is distributed on an "AS IS" BASIS,
+;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+;; See the License for the specific language governing permissions and
+;; limitations under the License.
+(ns org.apache.storm.daemon.local-supervisor
+ (:import [org.apache.storm.daemon.supervisor SyncProcessEvent
SupervisorData Supervisor SupervisorUtils]
+ [org.apache.storm.utils Utils ConfigUtils]
+ [org.apache.storm ProcessSimulator])
+ (:use [org.apache.storm.daemon common]
+ [org.apache.storm log])
+ (:require [org.apache.storm.daemon [worker :as worker] ])
+ (:require [clojure.string :as str])
+ (:gen-class))
+
+(defn launch-local-worker [supervisorData stormId port workerId resources]
+ (let [conf (.getConf supervisorData)
+ pid (Utils/uuid)
+ worker (worker/mk-worker conf
+ (.getSharedContext supervisorData)
+ stormId
+ (.getAssignmentId supervisorData)
+ (int port)
+ workerId)]
+ (ConfigUtils/setWorkerUserWSE conf workerId "")
+ (ProcessSimulator/registerProcess pid worker)
+ (.put (.getWorkerThreadPids supervisorData) workerId pid)
+ ))
+(defn shutdown-local-worker [supervisorData worker-manager workerId]
+ (log-message "shutdown-local-worker")
+ (let [supervisor-id (.getSupervisorId supervisorData)
+ worker-pids (.getWorkerThreadPids supervisorData)
+ dead-workers (.getDeadWorkers supervisorData)]
+ (.shutdownWorker worker-manager supervisor-id workerId worker-pids)
--- End diff --
In the old code when killing a worker we would call
`supervisor/shutdown-worker`, it will perform some acitons, and call
`ProcessSimulator/killProcess` & `supervisor/try-cleanup-worker`. Now we move
`try-cleanup-worker` to the worker-manager, it is called `cleanupWorker` . So
the `shutdown-local-worker` is similar to the `supervisor/shutddown-worker`.
Why do we override the `shutdown-local-worker`. Maybe I can't explain it
clearly. You can refer to testing.clj :
```
(defmacro capture-changed-workers
[& body]
`(let [launch-captured# (atom {})
shutdown-captured# (atom {})]
(with-var-roots [local-supervisor/launch-local-worker
(mk-capture-launch-fn launch-captured#)
local-supervisor/shutdown-local-worker
(mk-capture-shutdown-fn shutdown-captured#)]
~@body
{:launched @launch-captured#
:shutdown @shutdown-captured#})))
```
> port backtype.storm.daemon.supervisor to java
> ---------------------------------------------
>
> Key: STORM-1279
> URL: https://issues.apache.org/jira/browse/STORM-1279
> Project: Apache Storm
> Issue Type: New Feature
> Components: storm-core
> Reporter: Robert Joseph Evans
> Assignee: John Fang
> Labels: java-migration, jstorm-merger
> Attachments: Discussion about supervisor.pdf
>
>
> https://github.com/apache/storm/tree/jstorm-import/jstorm-core/src/main/java/com/alibaba/jstorm/daemon/supervisor
> as an example
> backtype.storm.event usage should be replaced with built-in java threadpools.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)