@Override public Response<Boolean> scheduleJobIfPossible(Long jobId) { try { String scheduleServer = jobServerDao.findServerByJobId(jobId); if (!Strings.isNullOrEmpty(scheduleServer)){ // re scheduling reloadJob(jobId); return Response.ok(true); } // get current server list Response<List<String>> listResp = clusterService.listSimpleServers(); if (!listResp.isSuccess()){ Logs.error("failed to list servers when schedule job(id={}) possible, cause: {}, but ignore", jobId, listResp.getErr()); return Response.ok(true); } List<String> servers = listResp.getData(); if (CollectionUtil.isNullOrEmpty(servers)){ // no available server, don't need schedule Logs.warn("There are no available server when schedule job(id={}) possible, but ignore.", jobId); return Response.ok(true); } return scheduleJob(jobId); } catch (Exception e) { Logs.error("failed to schedule job if possible(jobId={})", jobId); return Response.notOk("job.schedule.failed"); } }
@Override public Response<Boolean> scheduleJob(Long jobId) { try { // get current server list Response<List<String>> listResp = clusterService.listSimpleServers(); if (!listResp.isSuccess()){ return Response.notOk(listResp.getErr()); } List<String> servers = listResp.getData(); if (CollectionUtil.isNullOrEmpty(servers)){ // no available server, don't need schedule Logs.warn("There are no available servers when schedule job(id={}).", jobId); return Response.notOk("server.no.available"); } String targetServer = balancer.balance(servers); return Response.ok(doScheduleJob(jobId, targetServer)); } catch (Exception e) { Logs.error("failed to schedule job(jobId={})", jobId); return Response.notOk("job.schedule.failed"); } }