當伺服器通過executormanager中dispatch
方法將伺服器的提交資訊交給 flow 的時候.
executor 這邊通過azkaban-exec-server/executorservlet的doget
方法來接收到請求資訊, 通過handleajaxexecute
交給flowrunnermanager的submitflow
來處理.
public
void
submitflow(int execid) throws executormanagerexception
executableflow flow = null;
flow = executorloader.fetchexecutableflow(execid);
logger.info("get flow : " + flow.getflowid());
if (flow == null)
// sets up the project files and execution directory.
// 建立 executor 目錄並關聯 version_project
setupflow(flow);
// setup flow runner
flowwatcher watcher = null;
// 獲取 flow 的相關屬性
executionoptions options = flow.getexecutionoptions();
// 如果flow 執行之前還有沒有結束的佇列前面的 flow
// 則 監控其狀態
if (options.getpipelineexecutionid() != null) else
}// 獲取 job 執行的執行緒數量
int numjobthreads = numjobthreadperflow;
if (options.getflowparameters().containskey(flow_num_job_threads))
} catch (exception e)
}flowrunner runner =
new flowrunner(flow, executorloader, projectloader, jobtypemanager);
// 初始化屬性
runner.setflowwatcher(watcher)
.setjoblogsettings(joblogchunksize, joblognumfiles)
.setvalidateproxyuser(validateproxyuser)
.setnumjobthreads(numjobthreads).addlistener(this);
configureflowlevelmetrics(runner);
// check again.
if (runningflows.containskey(execid))
// finally, queue the sucker.
runningflows.put(execid, runner);
try catch (rejectedexecutionexception re)
}
Azkaban原始碼解析之使用者登入篇
使用者登入過程 當使用者首次進入 azkaban 的時候,需要首先登入系統,登入通過loginabstractazkabanservlet類來接入實現功能 loginabstractazkabanservlet中有乙個handleajaxloginaction用來處理使用者登入事件 createse...
spring原始碼分析 spring原始碼分析
1.spring 執行原理 spring 啟動時讀取應用程式提供的 bean 配置資訊,並在 spring 容器中生成乙份相應的 bean 配置登錄檔,然後根據這張登錄檔例項化 bean,裝配好 bean 之間的依賴關係,為上 層應用提供準備就緒的執行環境。二 spring 原始碼分析 1.1spr...
使用者登入原始碼
一 實現功能 1.是否允許同一使用者登入 2.同一使用者登入強制下線 二 功能說明 1.使用者在登入到系統前判斷當前使用者名稱是否登入 是否允許同一使用者名稱登入 同一使用者名稱登入是否踢出相同使用者 2.系統利用session儲存當前使用者名稱和登入時間完成以上功能 3.系統沒有使用任何資料和xm...