Examples of JobDescriptor


Examples of com.taobao.zeus.model.JobDescriptor

   * 1.
   * 2.抛出失败的消息
   * @param event
   */
  private void failedEventHandle(JobFailedEvent event){
    JobDescriptor jobDescriptor=cache.getJobDescriptor();
    if(jobDescriptor==null){
      autofix();
      return;
    }
    if(!jobDescriptor.getAuto()){
      return;
    }
    if(jobDescriptor.getDependencies().contains(event.getJobId())){//本Job依赖失败的Job
      if(event.getTriggerType()==TriggerType.SCHEDULE){//依赖的Job 的失败类型是 SCHEDULE类型
        //自身依赖的Job失败了,表明自身也无法继续执行,抛出失败的消息
        ZeusJobException exception=new ZeusJobException(event.getJobException().getCauseJobId(),"jobId:"+jobDescriptor.getId()+" 失败,原因是依赖的Job:"+event.getJobId()+" 执行失败",
            event.getJobException());
        ScheduleInfoLog.info("jobId:"+jobId+" is fail,as dependendy jobId:"+jobDescriptor.getId()+" is failed");
        //记录进History日志
        JobHistory history=new JobHistory();
        history.setStartTime(new Date());
        history.setEndTime(new Date());
        history.setExecuteHost(null);
        history.setJobId(jobId);
        history.setTriggerType(event.getTriggerType());
        history.setStatus(Status.FAILED);
        history.getLog().appendZeusException(exception);
        history=jobHistoryManager.addJobHistory(history);
        jobHistoryManager.updateJobHistoryLog(history.getId(), history.getLog().getContent());
       
       
        JobFailedEvent jfe=new JobFailedEvent(jobDescriptor.getId(),event.getTriggerType(),history,exception);
       
        ScheduleInfoLog.info("JobId:"+jobId+" is fail,dispatch the fail event");
        //广播消息
        context.getDispatcher().forwardEvent(jfe);
      }
View Full Code Here

Examples of com.taobao.zeus.model.JobDescriptor

   * 因为可能会碰到很多异常情况,比如本该删除的job没有删除,本该更新的job没有更新等等
   * 这里做统一的处理,处理完成之后,保证与数据库的设置是一致的
   */
  private void autofix(){
    cache.refresh();
    JobDescriptor jd=cache.getJobDescriptor();
    if(jd==null){//如果这是一个删除操作,这里将会是null 忽略
      //job被删除,需要清理
      context.getDispatcher().removeController(this);
      destory();
      ScheduleInfoLog.info("schedule remove job with jobId:"+jobId);
      return;
    }
    JobDetail detail=null;
    try {
      detail = context.getScheduler().getJobDetail(jobId, "group");
    } catch (SchedulerException e) {
      log.error(e);
    }
    //判断自动调度的开关
    if(!jd.getAuto()){
      if(detail!=null){
        try {
          context.getScheduler().deleteJob(jobId, "group");
          log.error("schedule remove job with jobId:"+jobId);
        } catch (SchedulerException e) {
          log.error(e);
        }
      }
      return;
    }
   
    if(jd.getScheduleType()==JobScheduleType.Dependent){//如果是依赖任务
      if(detail!=null){//说明原来是独立任务,现在变成依赖任务,需要删除原来的定时调度
        try {
          context.getScheduler().deleteJob(jobId, "group");
          ScheduleInfoLog.info("JobId:"+jobId+" from independent to dependent ,remove from schedule");
        } catch (SchedulerException e) {
          log.error(e);
        }
      }
     
    }else if(jd.getScheduleType()==JobScheduleType.Independent){//如果是独立任务
      ScheduleInfoLog.info("JobId:"+jobId+" independent job,update");
      try {
        if(detail!=null){
          context.getScheduler().deleteJob(jobId, "group");
          ScheduleInfoLog.info("JobId:"+jobId+" remove from schedule");
        }
        CronTrigger trigger=new CronTrigger(jd.getId(), "group", jd.getCronExpression());
        detail=new JobDetail(jd.getId(), "group", TimerJob.class);
        detail.getJobDataMap().put("jobId",jd.getId());
        detail.getJobDataMap().put("dispatcher", context.getDispatcher());
        context.getScheduler().scheduleJob(detail, trigger);
        ScheduleInfoLog.info("JobId:"+jobId+" add job to schedule for refresh");
      } catch (SchedulerException e) {
        log.error(e);
View Full Code Here

Examples of com.taobao.zeus.model.JobDescriptor

   * 收到定时触发任务的事件的处理流程
   * @param event
   */
  private void triggerEventHandle(ScheduleTriggerEvent event){
    String eId=event.getJobId();
    JobDescriptor jobDescriptor=cache.getJobDescriptor();
    if(jobDescriptor==null){//说明job被删除了,这是一个异常状况,autofix
      autofix();
      return;
    }
    if(!eId.equals(jobDescriptor.getId())){
      return;
    }
    ScheduleInfoLog.info("JobId:"+jobId+" receive a timer trigger event");
    JobHistory history=new JobHistory();
    history.setJobId(jobDescriptor.getId());
    history.setTriggerType(TriggerType.SCHEDULE);
    context.getJobHistoryManager().addJobHistory(history);
    master.run(history);
  }
View Full Code Here

Examples of com.taobao.zeus.model.JobDescriptor

  }
 
  @Override
  public String toString() {
    StringBuffer sb=new StringBuffer();
    JobDescriptor jd=cache.getJobDescriptor();
    if(jd==null){
      sb.append("JobId:"+jobId+" 查询为null,有异常");
    }else{
      sb.append("JobId:"+jobId).append(" auto:"+cache.getJobDescriptor().getAuto());
      sb.append(" dependency:"+cache.getJobDescriptor().getDependencies());
View Full Code Here

Examples of com.taobao.zeus.model.JobDescriptor

        final JobSuccessEvent event=(JobSuccessEvent) mvce.getAppEvent();
        if(event.getTriggerType()==TriggerType.SCHEDULE){
          return;
        }
        JobHistory history=jobHistoryManager.findJobHistory(event.getHistoryId());
        final JobDescriptor jd=groupManager.getJobDescriptor(history.getJobId()).getX();
        if(history.getOperator()!=null){
          //此处可以发送IM消息
        }
      }
    } catch (Exception e) {
View Full Code Here

Examples of com.taobao.zeus.model.JobDescriptor

        Query query=session.createQuery("select id,groupId from com.taobao.zeus.store.mysql.persistence.JobPersistence where gmt_modified>?");
        query.setDate(0, ignoreContentJobJudge.lastModified);
        List<Object[]> list=query.list();
        List<JobDescriptor> result=new ArrayList<JobDescriptor>();
        for(Object[] o:list){
          JobDescriptor jd=new JobDescriptor();
          jd.setId(String.valueOf(o[0]));
          jd.setGroupId(String.valueOf(o[1]));
          result.add(jd);
        }
        return result;
      }
    });
View Full Code Here

Examples of com.taobao.zeus.model.JobDescriptor

      JobBean bean=allJobs.get(jd.getId());
      if(bean==null){
        DebugInfoLog.info("isAllJobsNotChangeParent job id="+ jd.getId()+" has changed");
        return false;
      }
      JobDescriptor old=bean.getJobDescriptor();
      if(!old.getGroupId().equals(jd.getGroupId())){
        DebugInfoLog.info("isAllJobsNotChangeParent job id="+ jd.getId()+" has changed");
        return false;
      }
    }
    return true;
View Full Code Here

Examples of com.taobao.zeus.model.JobDescriptor

      type=JobRunType.Shell;
    }else if(JobModel.HIVE.equals(jobType)){
      type=JobRunType.Hive;
    }
    try {
      JobDescriptor jd=permissionGroupManager.createJob(LoginUser.getUser().getUid(), jobName, parentGroupId,type);
      return getUpstreamJob(jd.getId());
    } catch (ZeusException e) {
      log.error(e);
      throw new GwtException(e.getMessage());
    }
  }
View Full Code Here

Examples of com.taobao.zeus.model.JobDescriptor

  }
 
 
  @Override
  public JobModel updateJob(JobModel jobModel) throws GwtException {
    JobDescriptor jd=new JobDescriptor();
    jd.setCronExpression(jobModel.getCronExpression());
    jd.setDependencies(jobModel.getDependencies());
    jd.setDesc(jobModel.getDesc());
    jd.setGroupId(jobModel.getGroupId());
    jd.setId(jobModel.getId());
    JobRunType type=null;
    if(jobModel.getJobRunType().equals(JobModel.MapReduce)){
      type=JobRunType.MapReduce;
    }else if(jobModel.getJobRunType().equals(JobModel.SHELL)){
      type=JobRunType.Shell;
    }else if(jobModel.getJobRunType().equals(JobModel.HIVE)){
      type=JobRunType.Hive;
    }
    jd.setJobType(type);
    JobScheduleType scheduleType=null;
    if(JobModel.DEPEND_JOB.equals(jobModel.getJobScheduleType())){
      scheduleType=JobScheduleType.Dependent;
    }else if(JobModel.INDEPEN_JOB.equals(jobModel.getJobScheduleType())){
      scheduleType=JobScheduleType.Independent;
    }
    jd.setName(jobModel.getName());
    jd.setOwner(jobModel.getOwner());
    jd.setResources(jobModel.getLocalResources());
    jd.setProperties(jobModel.getLocalProperties());
    jd.setScheduleType(scheduleType);
    jd.setScript(jobModel.getScript());
    jd.setAuto(jobModel.getAuto());
   
    jd.setPreProcessers(parseProcessers(jobModel.getPreProcessers()));
    jd.setPostProcessers(parseProcessers(jobModel.getPostProcessers()));
    try {
      permissionGroupManager.updateJob(LoginUser.getUser().getUid(), jd);
      return getUpstreamJob(jd.getId());
    } catch (ZeusException e) {
      log.error(e);
      throw new GwtException(e.getMessage());
    }
  }
View Full Code Here

Examples of com.taobao.zeus.model.JobDescriptor

    return list;
  }
  @Override
  public void switchAuto(String jobId,Boolean auto) throws GwtException {
    Tuple<JobDescriptor, JobStatus> job=permissionGroupManager.getJobDescriptor(jobId);
    JobDescriptor jd=job.getX();
    if(!auto.equals(jd.getAuto())){
      jd.setAuto(auto);
      try {
        permissionGroupManager.updateJob(LoginUser.getUser().getUid(), jd);
      } catch (ZeusException e) {
        log.error(e);
        throw new GwtException(e.getMessage());
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.