Unverified Commit 98450c7b authored by lgcareer's avatar lgcareer Committed by GitHub
Browse files

Merge pull request #278 from lgcareer/branch-1.0.2

add listFileStatus and update deleteTenantById
parents d01a8b0e 58f142bc
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -232,4 +232,29 @@ public class SchedulerController extends BaseController{
          return error(Status.QUERY_SCHEDULE_LIST_ERROR.getCode(), Status.QUERY_SCHEDULE_LIST_ERROR.getMsg());
      }
  }

    /**
     * delete schedule by id
     *
     * @param loginUser
     * @param projectName
     * @param scheduleId
     * @return
     */
    @GetMapping(value="/delete")
    @ResponseStatus(HttpStatus.OK)
    public Result deleteScheduleById(@RequestAttribute(value = SESSION_USER) User loginUser,
                                              @PathVariable String projectName,
                                              @RequestParam("scheduleId") Integer scheduleId
    ){
        try{
            logger.info("delete schedule by id, login user:{}, project name:{}, schedule id:{}",
                    loginUser.getUserName(), projectName, scheduleId);
            Map<String, Object> result = schedulerService.deleteScheduleById(loginUser, projectName, scheduleId);
            return returnDataList(result);
        }catch (Exception e){
            logger.error(DELETE_SCHEDULE_CRON_BY_ID_ERROR.getMsg(),e);
            return error(Status.DELETE_SCHEDULE_CRON_BY_ID_ERROR.getCode(), Status.DELETE_SCHEDULE_CRON_BY_ID_ERROR.getMsg());
        }
    }
}
+3 −0
Original line number Diff line number Diff line
@@ -204,8 +204,11 @@ public enum Status {
    PROCESS_DEFINE_STATE_ONLINE(50021, "process definition {0} is already on line"),
    DELETE_PROCESS_DEFINE_BY_ID_ERROR(50022,"delete process definition by id error"),
    SCHEDULE_CRON_STATE_ONLINE(50023,"the status of schedule {0} is already on line"),
    DELETE_SCHEDULE_CRON_BY_ID_ERROR(50024,"delete schedule by id error"),

    HDFS_NOT_STARTUP(60001,"hdfs not startup"),
    HDFS_TERANT_RESOURCES_FILE_EXISTS(60002,"resource file exists,please delete resource first"),
    HDFS_TERANT_UDFS_FILE_EXISTS(60003,"udf file exists,please delete resource first"),

    /**
     * for monitor
+1 −1
Original line number Diff line number Diff line
@@ -370,7 +370,7 @@ public class ProcessDefinitionService extends BaseDAGService {
        }

        // get the timing according to the process definition
        List<Schedule> schedules = scheduleMapper.selectAllByProcessDefineArray(new int[processDefinitionId]);
        List<Schedule> schedules = scheduleMapper.queryByProcessDefinitionId(processDefinitionId);
        if (!schedules.isEmpty() && schedules.size() > 1) {
            logger.warn("scheduler num is {},Greater than 1",schedules.size());
            putMsg(result, Status.DELETE_PROCESS_DEFINE_BY_ID_ERROR);
+42 −0
Original line number Diff line number Diff line
@@ -488,4 +488,46 @@ public class SchedulerService extends BaseService {
        }
        return null;
    }

    /**
     * delete schedule by id
     *
     * @param loginUser
     * @param projectName
     * @param scheduleId
     * @return
     */
    public Map<String, Object> deleteScheduleById(User loginUser, String projectName, Integer scheduleId) {

        Map<String, Object> result = new HashMap<>(5);
        Project project = projectMapper.queryByName(projectName);

        Map<String, Object> checkResult = projectService.checkProjectAndAuth(loginUser, project, projectName);
        Status resultEnum = (Status) checkResult.get(Constants.STATUS);
        if (resultEnum != Status.SUCCESS) {
            return checkResult;
        }

        Schedule schedule = scheduleMapper.queryById(scheduleId);

        if (schedule == null) {
            putMsg(result, Status.SCHEDULE_CRON_NOT_EXISTS, scheduleId);
            return result;
        }
        // check schedule is already online
        if(schedule.getReleaseState() == ReleaseState.ONLINE){
            putMsg(result, Status.SCHEDULE_CRON_STATE_ONLINE,schedule.getId());
            return result;
        }


        int delete = scheduleMapper.delete(scheduleId);

        if (delete > 0) {
            putMsg(result, Status.SUCCESS);
        } else {
            putMsg(result, Status.DELETE_SCHEDULE_CRON_BY_ID_ERROR);
        }
        return result;
    }
}
 No newline at end of file
+15 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import cn.escheduler.dao.mapper.TenantMapper;
import cn.escheduler.dao.model.Tenant;
import cn.escheduler.dao.model.User;
import org.apache.commons.lang3.StringUtils;
import org.apache.hadoop.fs.FileStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -219,6 +220,7 @@ public class TenantService extends BaseService{
   * @param id
   * @return
   */
  @Transactional(value = "TransactionManager", rollbackFor = Exception.class)
  public Map<String, Object> deleteTenantById(User loginUser, int id) throws Exception {
    Map<String, Object> result = new HashMap<>(5);

@@ -229,6 +231,19 @@ public class TenantService extends BaseService{
    Tenant tenant = tenantMapper.queryById(id);

    String tenantPath = HadoopUtils.getHdfsDataBasePath() + "/" + tenant.getTenantCode();

    String resourcePath = HadoopUtils.getHdfsDir(tenant.getTenantCode());
    FileStatus[] fileStatus = HadoopUtils.getInstance().listFileStatus(resourcePath);
    if (fileStatus.length > 0) {
      putMsg(result, Status.HDFS_TERANT_RESOURCES_FILE_EXISTS);
      return result;
    }
    fileStatus = HadoopUtils.getInstance().listFileStatus(HadoopUtils.getHdfsUdfDir(tenant.getTenantCode()));
    if (fileStatus.length > 0) {
      putMsg(result, Status.HDFS_TERANT_UDFS_FILE_EXISTS);
      return result;
    }

    HadoopUtils.getInstance().delete(tenantPath, true);

    tenantMapper.deleteById(id);
Loading