记一次由于zeus服务停止后,启动花半小时…
MasterContext 初始化
// MasterContext.java
public void init(int port){
log.info("init begin");
...
master=new Master(this);
}
Master 初始化
费时间的部分
GroupManagerTool.buildGlobeGroupBean
- 1、从zeus_action表 提取所有 action_id
- 2、将action_id中的依赖关系在内存模型中关联起来,构建依赖关系的网状结构
// Master.java
public Master(final MasterContext context) {
this.context = context;
GroupBean root = context.getGroupManager().getGlobeGroupBean(); // << 进入下面 GroupManagerTool.buildGlobeGroupBean >>
...
Map<String, JobBean> allJobBeans = root.getAllSubJobBeans();
for (String id : allJobBeans.keySet()) {
context.getDispatcher().addController(
new JobController(context, this, id));
}
context.getDispatcher().forwardEvent(Events.Initialize);
...
}
// GroupManagerTool.java
public static GroupBean buildGlobeGroupBean(GroupManager groupManager) {
// step1. 从zeus_action表 提取所有 action_id
GroupBean root=groupManager.getDownstreamGroupBean(groupManager.getRootGroupId()); // << 进入下面 MysqlGroupManager.getDownstreamGroupBean.getChildrenGroup >>
Map<String, JobBean> allJobBeans=root.getAllSubJobBeans();
// step2. 将action_id中的依赖关系在内存模型中关联起来,构建依赖关系的网状结构
for(JobBean j1:allJobBeans.values()){
if(j1.getJobDescriptor().getScheduleType()==JobScheduleType.Dependent){
for(String depId:j1.getJobDescriptor().getDependencies()){
try{
JobBean depJob=allJobBeans.get(depId);
j1.addDependee(depJob);
depJob.addDepender(j1);
}catch(Exception e){
log.error("the jobid is " + j1.getJobDescriptor().getId() + ", the depId is " + depId, e);
}
}
}
}
return root;
}
// MysqlGroupManager.java
public List<GroupDescriptor> getChildrenGroup(String groupId) {
// << 从zeus_action表里 获取每个group下的action_id >>
List<GroupPersistence> list = getHibernateTemplate().find(
"from com.taobao.zeus.store.mysql.persistence.GroupPersistence where parent="
+ groupId);
...
return result;
}
删除zeus_action历史数据解决问题
感谢提供帮助…