diff --git a/saturn-console-api/src/main/java/com/vip/saturn/job/console/mybatis/service/impl/NamespaceInfoServiceImpl.java b/saturn-console-api/src/main/java/com/vip/saturn/job/console/mybatis/service/impl/NamespaceInfoServiceImpl.java index 203520ede..6671d2eeb 100644 --- a/saturn-console-api/src/main/java/com/vip/saturn/job/console/mybatis/service/impl/NamespaceInfoServiceImpl.java +++ b/saturn-console-api/src/main/java/com/vip/saturn/job/console/mybatis/service/impl/NamespaceInfoServiceImpl.java @@ -1,6 +1,3 @@ -/** - * - */ package com.vip.saturn.job.console.mybatis.service.impl; import com.vip.saturn.job.console.mybatis.entity.NamespaceInfo; @@ -8,11 +5,11 @@ import com.vip.saturn.job.console.mybatis.service.NamespaceInfoService; import java.util.List; import java.util.concurrent.TimeUnit; -import javax.transaction.Transactional; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; /** diff --git a/saturn-console-api/src/main/java/com/vip/saturn/job/console/mybatis/service/impl/ReleaseVersionInfoServiceImpl.java b/saturn-console-api/src/main/java/com/vip/saturn/job/console/mybatis/service/impl/ReleaseVersionInfoServiceImpl.java index e08b18c0f..0ef23dce9 100644 --- a/saturn-console-api/src/main/java/com/vip/saturn/job/console/mybatis/service/impl/ReleaseVersionInfoServiceImpl.java +++ b/saturn-console-api/src/main/java/com/vip/saturn/job/console/mybatis/service/impl/ReleaseVersionInfoServiceImpl.java @@ -1,6 +1,3 @@ -/** - * - */ package com.vip.saturn.job.console.mybatis.service.impl; import com.vip.saturn.job.console.exception.SaturnJobConsoleException; @@ -9,9 +6,9 @@ import com.vip.saturn.job.console.mybatis.service.ReleaseVersionInfoService; import java.util.Date; import java.util.List; -import javax.transaction.Transactional; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * @author timmy.hu diff --git a/saturn-console-api/src/main/java/com/vip/saturn/job/console/service/impl/JobServiceImpl.java b/saturn-console-api/src/main/java/com/vip/saturn/job/console/service/impl/JobServiceImpl.java index 9ee9d3bbf..deda99eab 100644 --- a/saturn-console-api/src/main/java/com/vip/saturn/job/console/service/impl/JobServiceImpl.java +++ b/saturn-console-api/src/main/java/com/vip/saturn/job/console/service/impl/JobServiceImpl.java @@ -35,11 +35,11 @@ import org.springframework.beans.BeanUtils; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; -import javax.transaction.Transactional; import java.io.File; import java.lang.Boolean; import java.text.ParseException; @@ -360,6 +360,7 @@ public void disableJob(String namespace, String jobName) throws SaturnJobConsole curatorFrameworkOp.update(JobNodePath.getConfigNodePath(jobName, "enabled"), false); } + @Transactional @Override public void removeJob(String namespace, String jobName) throws SaturnJobConsoleException { JobConfig4DB jobConfig = currentJobConfigService.findConfigByNamespaceAndJobName(namespace, jobName); @@ -375,8 +376,9 @@ public void removeJob(String namespace, String jobName) throws SaturnJobConsoleE long createTimeDiff = System.currentTimeMillis() - stat.getCtime(); if (createTimeDiff < SaturnConstants.JOB_CAN_BE_DELETE_TIME_LIMIT) { throw new SaturnJobConsoleException( - "不能删除该作业(" + jobName + "),因为该作业创建时间距离现在不超过" + (SaturnConstants.JOB_CAN_BE_DELETE_TIME_LIMIT - / 60000) + "分钟"); + String.format("不能删除该作业(%s),因为该作业创建时间距离现在不超过%d分钟", jobName, + SaturnConstants.JOB_CAN_BE_DELETE_TIME_LIMIT + / 60000)); } } // remove job from db @@ -428,7 +430,7 @@ public void removeJob(String namespace, String jobName) throws SaturnJobConsoleE } } } else { - throw new SaturnJobConsoleException("不能删除该作业(" + jobName + "),因为该作业不处于STOPPED状态"); + throw new SaturnJobConsoleException(String.format("不能删除该作业(%s),因为该作业不处于STOPPED状态", jobName)); } } diff --git a/saturn-console-core/src/main/java/com/vip/saturn/job/console/mybatis/service/impl/NamespaceInfoServiceImpl.java b/saturn-console-core/src/main/java/com/vip/saturn/job/console/mybatis/service/impl/NamespaceInfoServiceImpl.java index 300a9d5a3..90eb663a9 100644 --- a/saturn-console-core/src/main/java/com/vip/saturn/job/console/mybatis/service/impl/NamespaceInfoServiceImpl.java +++ b/saturn-console-core/src/main/java/com/vip/saturn/job/console/mybatis/service/impl/NamespaceInfoServiceImpl.java @@ -1,6 +1,3 @@ -/** - * - */ package com.vip.saturn.job.console.mybatis.service.impl; import java.util.List; @@ -10,14 +7,13 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import com.vip.saturn.job.console.mybatis.entity.NamespaceInfo; import com.vip.saturn.job.console.mybatis.repository.NamespaceInfoRepository; import com.vip.saturn.job.console.mybatis.service.NamespaceInfoService; -import javax.transaction.Transactional; - /** * @author timmy.hu * diff --git a/saturn-console-core/src/main/java/com/vip/saturn/job/console/mybatis/service/impl/ReleaseVersionInfoServiceImpl.java b/saturn-console-core/src/main/java/com/vip/saturn/job/console/mybatis/service/impl/ReleaseVersionInfoServiceImpl.java index 899e60f86..81487b1fb 100644 --- a/saturn-console-core/src/main/java/com/vip/saturn/job/console/mybatis/service/impl/ReleaseVersionInfoServiceImpl.java +++ b/saturn-console-core/src/main/java/com/vip/saturn/job/console/mybatis/service/impl/ReleaseVersionInfoServiceImpl.java @@ -1,13 +1,8 @@ -/** - * - */ package com.vip.saturn.job.console.mybatis.service.impl; import java.util.Date; import java.util.List; -import javax.transaction.Transactional; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -15,6 +10,7 @@ import com.vip.saturn.job.console.mybatis.entity.ReleaseVersionInfo; import com.vip.saturn.job.console.mybatis.repository.ReleaseVersionInfoRepository; import com.vip.saturn.job.console.mybatis.service.ReleaseVersionInfoService; +import org.springframework.transaction.annotation.Transactional; /** * @author timmy.hu diff --git a/saturn-console-core/src/main/java/com/vip/saturn/job/console/service/ExecutorService.java b/saturn-console-core/src/main/java/com/vip/saturn/job/console/service/ExecutorService.java index e981baa5b..52ad9cf77 100644 --- a/saturn-console-core/src/main/java/com/vip/saturn/job/console/service/ExecutorService.java +++ b/saturn-console-core/src/main/java/com/vip/saturn/job/console/service/ExecutorService.java @@ -9,7 +9,7 @@ /** * - * @author xiaopeng.he + * @author hebelala * */ public interface ExecutorService { @@ -26,7 +26,7 @@ public interface ExecutorService { * Use JobOperationService.removeJob(String jobName) */ @Deprecated - String removeJob(String jobName); + void removeJob(String jobName) throws SaturnJobConsoleException; File getExportJobFile() throws SaturnJobConsoleException; diff --git a/saturn-console-old/src/main/java/com/vip/saturn/job/console/controller/JobOperationController.java b/saturn-console-old/src/main/java/com/vip/saturn/job/console/controller/JobOperationController.java index 51ca1f622..d2e40ea34 100644 --- a/saturn-console-old/src/main/java/com/vip/saturn/job/console/controller/JobOperationController.java +++ b/saturn-console-old/src/main/java/com/vip/saturn/job/console/controller/JobOperationController.java @@ -313,21 +313,18 @@ public RequestResult removeStoppedJob(String jobName, HttpServletRequest request RequestResult requestResult = new RequestResult(); JobStatus jobStatus = jobDimensionService.getJobStatus(jobName); if (JobStatus.STOPPED.equals(jobStatus)) { - String result = executorService.removeJob(jobName); - if (SaturnConstants.DEAL_SUCCESS.equals(result)) { + try { + executorService.removeJob(jobName); requestResult.setSuccess(true); - return requestResult; - } else { + } catch (SaturnJobConsoleException e) { requestResult.setSuccess(false); - requestResult.setMessage(result); - return requestResult; + requestResult.setMessage(e.getMessage()); } - // let zk and the watchers update theirselves. } else { requestResult.setSuccess(false); requestResult.setMessage("作业【" + jobName + "】不处于STOPPED状态,不能删除."); - return requestResult; } + return requestResult; } @RequestMapping(value = "batchRemove/jobs", method = RequestMethod.POST) @@ -340,9 +337,10 @@ public String batchRemoveStoppedJob(final String jobNames, HttpServletRequest re for (String jobName : jobNamesArr) { JobStatus jobStatus = jobDimensionService.getJobStatus(jobName); if (JobStatus.STOPPED.equals(jobStatus)) { - String removeResult = executorService.removeJob(jobName); - if (!SaturnConstants.DEAL_SUCCESS.equals(removeResult)) { - errorLog.append(removeResult).append(","); + try { + executorService.removeJob(jobName); + } catch (SaturnJobConsoleException e) { + errorLog.append(e.getMessage()).append(","); } // let zk and the watchers update theirselves. } else { diff --git a/saturn-console-old/src/main/java/com/vip/saturn/job/console/service/impl/ContainerServiceImpl.java b/saturn-console-old/src/main/java/com/vip/saturn/job/console/service/impl/ContainerServiceImpl.java index 4249e90de..9ce82b4c0 100644 --- a/saturn-console-old/src/main/java/com/vip/saturn/job/console/service/impl/ContainerServiceImpl.java +++ b/saturn-console-old/src/main/java/com/vip/saturn/job/console/service/impl/ContainerServiceImpl.java @@ -534,13 +534,9 @@ public void deleteContainerScaleJob(String taskId, String jobName) throws Saturn waitStopTime -= 100; JobStatus jobStatus = jobDimensionService.getJobStatus(jobName); if (JobStatus.STOPPED.equals(jobStatus)) { - String removeResult = executorService.removeJob(jobName); - if (SaturnConstants.DEAL_SUCCESS.equals(removeResult)) { - deleteScaleJobNodePath(curatorFrameworkOp, taskId, jobName); - return; - } else { - throw new SaturnJobConsoleException(removeResult); - } + executorService.removeJob(jobName); + deleteScaleJobNodePath(curatorFrameworkOp, taskId, jobName); + return; } } throw new SaturnJobConsoleException("The job is not stopped, cannot be deleted, please retry later"); diff --git a/saturn-console-old/src/main/java/com/vip/saturn/job/console/service/impl/ExecutorServiceImpl.java b/saturn-console-old/src/main/java/com/vip/saturn/job/console/service/impl/ExecutorServiceImpl.java index 6ba535563..ad3dcc498 100644 --- a/saturn-console-old/src/main/java/com/vip/saturn/job/console/service/impl/ExecutorServiceImpl.java +++ b/saturn-console-old/src/main/java/com/vip/saturn/job/console/service/impl/ExecutorServiceImpl.java @@ -30,6 +30,7 @@ import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; @@ -145,16 +146,16 @@ public RequestResult addJobs(JobConfig jobConfig) { return requestResult; } + @Transactional @Override - public String removeJob(String jobName) { + public void removeJob(String jobName) throws SaturnJobConsoleException { try { Stat itemStat = ThreadLocalCuratorClient.getCuratorClient().checkExists() .forPath(JobNodePath.getJobNodePath(jobName)); if (itemStat != null) { long createTimeDiff = System.currentTimeMillis() - itemStat.getCtime(); if (createTimeDiff < SaturnConstants.JOB_CAN_BE_DELETE_TIME_LIMIT) { - return "作业【" + jobName + "】创建后" + (SaturnConstants.JOB_CAN_BE_DELETE_TIME_LIMIT / 60 / 1000) - + "分钟内不允许删除"; + throw new SaturnJobConsoleException(String.format("作业%s创建后%d分钟内不允许删除", jobName, SaturnConstants.JOB_CAN_BE_DELETE_TIME_LIMIT / 60 / 1000)); } } @@ -174,13 +175,13 @@ public String removeJob(String jobName) { if (!curatorFrameworkOp.checkExists(jobServerPath)) { // (1)如果不存在$Job/JobName/servers节点,说明该作业没有任何executor接管,可直接删除作业节点 curatorFrameworkOp.deleteRecursive(JobNodePath.getJobNodePath(jobName)); - return SaturnConstants.DEAL_SUCCESS; + return; } // (2)如果该作业servers下没有任何executor,可直接删除作业节点 List executors = curatorFrameworkOp.getChildren(jobServerPath); if (CollectionUtils.isEmpty(executors)) { curatorFrameworkOp.deleteRecursive(JobNodePath.getJobNodePath(jobName)); - return SaturnConstants.DEAL_SUCCESS; + return; } // (3)只要该作业没有一个能运行的该作业的executor在线,那么直接删除作业节点 boolean hasOnlineExecutor = false; @@ -197,11 +198,12 @@ public String removeJob(String jobName) { } Thread.sleep(200); } + } catch (SaturnJobConsoleException e) { + throw e; } catch (Throwable t) { log.error(t.getMessage(), t); - return t.getMessage(); + throw new SaturnJobConsoleException(t); } - return SaturnConstants.DEAL_SUCCESS; } private void deleteJobFromDb(CuratorRepository.CuratorFrameworkOp curatorFrameworkOp, String jobName) diff --git a/saturn-console-old/src/main/java/com/vip/saturn/job/console/service/impl/JobDimensionServiceImpl.java b/saturn-console-old/src/main/java/com/vip/saturn/job/console/service/impl/JobDimensionServiceImpl.java index bf879df6c..9eb62796d 100644 --- a/saturn-console-old/src/main/java/com/vip/saturn/job/console/service/impl/JobDimensionServiceImpl.java +++ b/saturn-console-old/src/main/java/com/vip/saturn/job/console/service/impl/JobDimensionServiceImpl.java @@ -42,10 +42,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; -import javax.transaction.Transactional; import java.text.NumberFormat; import java.text.ParseException; import java.text.SimpleDateFormat; diff --git a/saturn-console-old/src/main/java/com/vip/saturn/job/console/service/impl/JobOperationServiceImpl.java b/saturn-console-old/src/main/java/com/vip/saturn/job/console/service/impl/JobOperationServiceImpl.java index 4087a1ce8..5475fb8f6 100644 --- a/saturn-console-old/src/main/java/com/vip/saturn/job/console/service/impl/JobOperationServiceImpl.java +++ b/saturn-console-old/src/main/java/com/vip/saturn/job/console/service/impl/JobOperationServiceImpl.java @@ -42,10 +42,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; -import javax.transaction.Transactional; import java.lang.reflect.Field; import java.text.ParseException; @@ -557,6 +557,7 @@ private void saveJobConfigToZkWhenCopy(JobConfig jobConfig, CuratorRepository.Cu } } + @Transactional @Override public void deleteJob(String jobName, CuratorRepository.CuratorFrameworkOp curatorFrameworkOp) throws SaturnJobConsoleException {