From 989cef6f65ab86234b4c6bca2708c5db921a036a Mon Sep 17 00:00:00 2001 From: dongzeliang <2746733890@qq.com> Date: Thu, 16 Jan 2025 17:46:00 +0800 Subject: [PATCH] =?UTF-8?q?fix():=20=E4=BB=A3=E7=A0=81=E8=A7=84=E8=8C=83?= =?UTF-8?q?=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/config/MybatisPlusConfig.java | 3 +- .../common/core/utils/html/HTMLFilter.java | 18 +++-- .../service/impl/SysRoleServiceImpl.java | 10 +-- .../admin/controller/JobInfoController.java | 21 +++--- .../admin/controller/JobLogController.java | 59 +++++++++------- .../admin/controller/JobUserController.java | 9 ++- .../interceptor/PermissionInterceptor.java | 17 +++-- .../admin/core/conf/XxlJobAdminConfig.java | 3 +- .../job/admin/core/cron/CronExpression.java | 6 +- .../xxl/job/admin/core/model/XxlJobGroup.java | 10 +-- .../xxl/job/admin/core/model/XxlJobInfo.java | 68 ++++++++++++------- .../job/admin/core/model/XxlJobLogGlue.java | 6 +- .../xxl/job/admin/core/model/XxlJobUser.java | 12 ++-- .../core/route/strategy/ExecutorRouteLFU.java | 3 +- .../admin/core/thread/JobScheduleHelper.java | 9 ++- .../core/thread/JobTriggerPoolHelper.java | 20 +++--- .../job/admin/core/trigger/XxlJobTrigger.java | 6 +- .../admin/service/impl/XxlJobServiceImpl.java | 19 ++++-- .../xxl/job/core/context/XxlJobContext.java | 6 +- .../xxl/job/core/executor/XxlJobExecutor.java | 14 ++-- .../executor/impl/XxlJobSpringExecutor.java | 3 +- .../core/handler/impl/MethodJobHandler.java | 3 +- .../xxl/job/core/log/XxlJobFileAppender.java | 6 +- .../com/xxl/job/core/thread/JobThread.java | 19 +++--- .../core/thread/TriggerCallbackThread.java | 3 +- .../com/xxl/job/core/util/ScriptUtil.java | 3 +- 26 files changed, 221 insertions(+), 135 deletions(-) diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/config/MybatisPlusConfig.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/config/MybatisPlusConfig.java index e19980c..1762154 100644 --- a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/config/MybatisPlusConfig.java +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/config/MybatisPlusConfig.java @@ -15,7 +15,8 @@ public class MybatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); - interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 如果配置多个插件, 切记分页最后添加 + // 如果配置多个插件, 切记分页最后添加 + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; } } \ No newline at end of file diff --git a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/html/HTMLFilter.java b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/html/HTMLFilter.java index b66077b..86455fe 100644 --- a/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/html/HTMLFilter.java +++ b/cloud-common/cloud-common-core/src/main/java/com/muyu/common/core/utils/html/HTMLFilter.java @@ -338,12 +338,16 @@ public final class HTMLFilter { final List paramNames = new ArrayList<>(); final List paramValues = new ArrayList<>(); while (m2.find()) { - paramNames.add(m2.group(1)); // ([a-z0-9]+) - paramValues.add(m2.group(3)); // (.*?) + // ([a-z0-9]+) + paramNames.add(m2.group(1)); + // (.*?) + paramValues.add(m2.group(3)); } while (m3.find()) { - paramNames.add(m3.group(1)); // ([a-z0-9]+) - paramValues.add(m3.group(3)); // ([^\"\\s']+) + // ([a-z0-9]+) + paramNames.add(m3.group(1)); + // ([^\"\\s']+) + paramValues.add(m3.group(3)); } String paramName, paramValue; @@ -454,8 +458,10 @@ public final class HTMLFilter { // validate entities throughout the string Matcher m = P_VALID_ENTITIES.matcher(s); while (m.find()) { - final String one = m.group(1); // ([^&;]*) - final String two = m.group(2); // (?=(;|&|$)) + // ([^&;]*) + final String one = m.group(1); + // (?=(;|&|$)) + final String two = m.group(2); m.appendReplacement(buf, Matcher.quoteReplacement(checkEntity(one, two))); } m.appendTail(buf); diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysRoleServiceImpl.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysRoleServiceImpl.java index d5bf96e..9f921a1 100644 --- a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysRoleServiceImpl.java +++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/service/impl/SysRoleServiceImpl.java @@ -289,8 +289,8 @@ public class SysRoleServiceImpl extends ServiceImpl impl */ @Override public boolean updateRoleStatus (SysRole role) { - boolean updateResult = updateById(role); // 通过 roleId 更新角色信息 - return updateResult; + // 通过 roleId 更新角色信息 + return updateById(role); } /** @@ -303,7 +303,8 @@ public class SysRoleServiceImpl extends ServiceImpl impl @Transactional(rollbackFor = Exception.class) public boolean authDataScope (SysRole role) { // 修改角色信息 - boolean updateResult = updateById(role); // 通过 roleId 更新角色信息 + // 通过 roleId 更新角色信息 + boolean updateResult = updateById(role); // 删除角色与部门关联 roleDeptMapper.deleteRoleDeptByRoleId(role.getRoleId()); // 新增角色和部门信息(数据权限) @@ -332,7 +333,8 @@ public class SysRoleServiceImpl extends ServiceImpl impl // 使用MyBatis-Plus的saveBatch方法批量插入角色与菜单的关联关系 boolean saveResult = roleMenuMapper.saveBatch(list); - return saveResult ? list.size() : 0; // 返回成功插入的数量 + // 返回成功插入的数量 + return saveResult ? list.size() : 0; } /** diff --git a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java index 5d23e96..0f77846 100644 --- a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java +++ b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java @@ -46,18 +46,23 @@ public class JobInfoController { public String index(HttpServletRequest request, Model model, @RequestParam(required = false, defaultValue = "-1") int jobGroup) { // 枚举-字典 - model.addAttribute("ExecutorRouteStrategyEnum", ExecutorRouteStrategyEnum.values()); // 路由策略-列表 - model.addAttribute("GlueTypeEnum", GlueTypeEnum.values()); // Glue类型-字典 - model.addAttribute("ExecutorBlockStrategyEnum", ExecutorBlockStrategyEnum.values()); // 阻塞处理策略-字典 - model.addAttribute("ScheduleTypeEnum", ScheduleTypeEnum.values()); // 调度类型 - model.addAttribute("MisfireStrategyEnum", MisfireStrategyEnum.values()); // 调度过期策略 + // 路由策略-列表 + model.addAttribute("ExecutorRouteStrategyEnum", ExecutorRouteStrategyEnum.values()); + // Glue类型-字典 + model.addAttribute("GlueTypeEnum", GlueTypeEnum.values()); + // 阻塞处理策略-字典 + model.addAttribute("ExecutorBlockStrategyEnum", ExecutorBlockStrategyEnum.values()); + // 调度类型 + model.addAttribute("ScheduleTypeEnum", ScheduleTypeEnum.values()); + // 调度过期策略 + model.addAttribute("MisfireStrategyEnum", MisfireStrategyEnum.values()); // 执行器列表 - List jobGroupList_all = xxlJobGroupDao.findAll(); + List jobGroupList1 = xxlJobGroupDao.findAll(); // filter group - List jobGroupList = PermissionInterceptor.filterJobGroupByRole(request, jobGroupList_all); - if (jobGroupList==null || jobGroupList.size()==0) { + List jobGroupList = PermissionInterceptor.filterJobGroupByRole(request, jobGroupList1); + if (jobGroupList==null || jobGroupList.isEmpty()) { throw new XxlJobException(I18nUtil.getString("jobgroup_empty")); } diff --git a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java index 319a3f4..ad96e9e 100644 --- a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java +++ b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java @@ -94,13 +94,13 @@ public class JobLogController { @RequestParam(required = false, defaultValue = "10") int length, int jobGroup, int jobId, int logStatus, String filterTime) { - // valid permission - PermissionInterceptor.validJobGroupPermission(request, jobGroup); // 仅管理员支持查询全部;普通用户仅支持查询有权限的 jobGroup + // valid permission 仅管理员支持查询全部;普通用户仅支持查询有权限的 jobGroup + PermissionInterceptor.validJobGroupPermission(request, jobGroup); // parse param Date triggerTimeStart = null; Date triggerTimeEnd = null; - if (filterTime!=null && filterTime.trim().length()>0) { + if (filterTime!=null && !filterTime.trim().isEmpty()) { String[] temp = filterTime.split(" - "); if (temp.length == 2) { triggerTimeStart = DateUtil.parseDateTime(temp[0]); @@ -114,9 +114,12 @@ public class JobLogController { // package result Map maps = new HashMap(); - maps.put("recordsTotal", list_count); // 总记录数 - maps.put("recordsFiltered", list_count); // 过滤后的总记录数 - maps.put("data", list); // 分页列表 + // 总记录数 + maps.put("recordsTotal", list_count); + // 过滤后的总记录数 + maps.put("recordsFiltered", list_count); + // 分页列表 + maps.put("data", list); return maps; } @@ -141,9 +144,10 @@ public class JobLogController { public ReturnT logDetailCat(long logId, int fromLineNum){ try { // valid - XxlJobLog jobLog = xxlJobLogDao.load(logId); // todo, need to improve performance + // todo, need to improve performance + XxlJobLog jobLog = xxlJobLogDao.load(logId); if (jobLog == null) { - return new ReturnT(ReturnT.FAIL_CODE, I18nUtil.getString("joblog_logid_unvalid")); + return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString("joblog_logid_unvalid")); } // log cat @@ -191,7 +195,7 @@ public class JobLogController { runResult = executorBiz.kill(new KillParam(jobInfo.getId())); } catch (Exception e) { logger.error(e.getMessage(), e); - runResult = new ReturnT(500, e.getMessage()); + runResult = new ReturnT<>(500, e.getMessage()); } if (ReturnT.SUCCESS_CODE == runResult.getCode()) { @@ -199,9 +203,9 @@ public class JobLogController { log.setHandleMsg( I18nUtil.getString("joblog_kill_log_byman")+":" + (runResult.getMsg()!=null?runResult.getMsg():"")); log.setHandleTime(new Date()); XxlJobCompleter.updateHandleInfoAndFinish(log); - return new ReturnT(runResult.getMsg()); + return new ReturnT<>(runResult.getMsg()); } else { - return new ReturnT(500, runResult.getMsg()); + return new ReturnT<>(500, runResult.getMsg()); } } @@ -215,34 +219,43 @@ public class JobLogController { Date clearBeforeTime = null; int clearBeforeNum = 0; if (type == 1) { - clearBeforeTime = DateUtil.addMonths(new Date(), -1); // 清理一个月之前日志数据 + // 清理一个月之前日志数据 + clearBeforeTime = DateUtil.addMonths(new Date(), -1); } else if (type == 2) { - clearBeforeTime = DateUtil.addMonths(new Date(), -3); // 清理三个月之前日志数据 + // 清理三个月之前日志数据 + clearBeforeTime = DateUtil.addMonths(new Date(), -3); } else if (type == 3) { - clearBeforeTime = DateUtil.addMonths(new Date(), -6); // 清理六个月之前日志数据 + // 清理六个月之前日志数据 + clearBeforeTime = DateUtil.addMonths(new Date(), -6); } else if (type == 4) { - clearBeforeTime = DateUtil.addYears(new Date(), -1); // 清理一年之前日志数据 + // 清理一年之前日志数据 + clearBeforeTime = DateUtil.addYears(new Date(), -1); } else if (type == 5) { - clearBeforeNum = 1000; // 清理一千条以前日志数据 + // 清理一千条以前日志数据 + clearBeforeNum = 1000; } else if (type == 6) { - clearBeforeNum = 10000; // 清理一万条以前日志数据 + // 清理一万条以前日志数据 + clearBeforeNum = 10000; } else if (type == 7) { - clearBeforeNum = 30000; // 清理三万条以前日志数据 + // 清理三万条以前日志数据 + clearBeforeNum = 30000; } else if (type == 8) { - clearBeforeNum = 100000; // 清理十万条以前日志数据 + // 清理十万条以前日志数据 + clearBeforeNum = 100000; } else if (type == 9) { - clearBeforeNum = 0; // 清理所有日志数据 + // 清理所有日志数据 + clearBeforeNum = 0; } else { - return new ReturnT(ReturnT.FAIL_CODE, I18nUtil.getString("joblog_clean_type_unvalid")); + return new ReturnT<>(ReturnT.FAIL_CODE, I18nUtil.getString("joblog_clean_type_unvalid")); } List logIds = null; do { logIds = xxlJobLogDao.findClearLogIds(jobGroup, jobId, clearBeforeTime, clearBeforeNum, 1000); - if (logIds!=null && logIds.size()>0) { + if (logIds!=null && !logIds.isEmpty()) { xxlJobLogDao.clearLog(logIds); } - } while (logIds!=null && logIds.size()>0); + } while (logIds!=null && !logIds.isEmpty()); return ReturnT.SUCCESS; } diff --git a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobUserController.java b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobUserController.java index 32b607c..de71147 100644 --- a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobUserController.java +++ b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobUserController.java @@ -65,9 +65,12 @@ public class JobUserController { // package result Map maps = new HashMap(); - maps.put("recordsTotal", list_count); // 总记录数 - maps.put("recordsFiltered", list_count); // 过滤后的总记录数 - maps.put("data", list); // 分页列表 + // 总记录数 + maps.put("recordsTotal", list_count); + // 过滤后的总记录数 + maps.put("recordsFiltered", list_count); + // 分页列表 + maps.put("data", list); return maps; } diff --git a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java index 0f37bd6..fdbdb6a 100644 --- a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java +++ b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java @@ -31,7 +31,8 @@ public class PermissionInterceptor implements AsyncHandlerInterceptor { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if (!(handler instanceof HandlerMethod)) { - return true; // proceed with the next interceptor + // proceed with the next interceptor + return true; } // if need login @@ -54,10 +55,12 @@ public class PermissionInterceptor implements AsyncHandlerInterceptor { if (needAdminuser && loginUser.getRole()!=1) { throw new RuntimeException(I18nUtil.getString("system_permission_limit")); } - request.setAttribute(LoginService.LOGIN_IDENTITY_KEY, loginUser); // set loginUser, with request + // set loginUser, with request + request.setAttribute(LoginService.LOGIN_IDENTITY_KEY, loginUser); } - return true; // proceed with the next interceptor + // proceed with the next interceptor + return true; } @@ -70,8 +73,8 @@ public class PermissionInterceptor implements AsyncHandlerInterceptor { * @return */ public static XxlJobUser getLoginUser(HttpServletRequest request){ - XxlJobUser loginUser = (XxlJobUser) request.getAttribute(LoginService.LOGIN_IDENTITY_KEY); // get loginUser, with request - return loginUser; + // get loginUser, with request + return (XxlJobUser) request.getAttribute(LoginService.LOGIN_IDENTITY_KEY); } /** @@ -96,13 +99,13 @@ public class PermissionInterceptor implements AsyncHandlerInterceptor { */ public static List filterJobGroupByRole(HttpServletRequest request, List jobGroupList_all){ List jobGroupList = new ArrayList<>(); - if (jobGroupList_all!=null && jobGroupList_all.size()>0) { + if (jobGroupList_all!=null && !jobGroupList_all.isEmpty()) { XxlJobUser loginUser = PermissionInterceptor.getLoginUser(request); if (loginUser.getRole() == 1) { jobGroupList = jobGroupList_all; } else { List groupIdStrs = new ArrayList<>(); - if (loginUser.getPermission()!=null && loginUser.getPermission().trim().length()>0) { + if (loginUser.getPermission()!=null && !loginUser.getPermission().trim().isEmpty()) { groupIdStrs = Arrays.asList(loginUser.getPermission().trim().split(",")); } for (XxlJobGroup groupItem:jobGroupList_all) { diff --git a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminConfig.java b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminConfig.java index 380b8a5..d9d00bb 100644 --- a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminConfig.java +++ b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminConfig.java @@ -118,7 +118,8 @@ public class XxlJobAdminConfig implements InitializingBean, DisposableBean { public int getLogretentiondays() { if (logretentiondays < 7) { - return -1; // Limit greater than or equal to 7, otherwise close + // Limit greater than or equal to 7, otherwise close + return -1; } return logretentiondays; } diff --git a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/cron/CronExpression.java b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/cron/CronExpression.java index 990d9dc..085d656 100644 --- a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/cron/CronExpression.java +++ b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/cron/CronExpression.java @@ -1425,9 +1425,9 @@ public final class CronExpression implements Serializable, Cloneable { } } else if (nthdayOfWeek != 0) { - // are we looking for the Nth XXX day in the month? - int dow = daysOfWeek.first(); // desired - // d-o-w // current d-o-w + // are we looking for the Nth XXX day in the month? desired + int dow = daysOfWeek.first(); + // d-o-w current d-o-w int cDow = cl.get(Calendar.DAY_OF_WEEK); int daysToAdd = 0; if (cDow < dow) { diff --git a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java index dde4b39..095a5ab 100644 --- a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java +++ b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java @@ -13,12 +13,14 @@ public class XxlJobGroup { private int id; private String appname; private String title; - private int addressType; // 执行器地址类型:0=自动注册、1=手动录入 - private String addressList; // 执行器地址列表,多地址逗号分隔(手动录入) + // 执行器地址类型:0=自动注册、1=手动录入 + private int addressType; + // 执行器地址列表,多地址逗号分隔(手动录入) + private String addressList; private Date updateTime; - // registry list - private List registryList; // 执行器地址列表(系统注册) + // registry list // 执行器地址列表(系统注册) + private List registryList; public List getRegistryList() { if (addressList!=null && addressList.trim().length()>0) { registryList = new ArrayList(Arrays.asList(addressList.split(","))); diff --git a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java index e47b6dc..8a65f55 100644 --- a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java +++ b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java @@ -8,39 +8,57 @@ import java.util.Date; * @author xuxueli 2016-1-12 18:25:49 */ public class XxlJobInfo { - - private int id; // 主键ID - - private int jobGroup; // 执行器主键ID + // 主键ID + private int id; + // 执行器主键ID + private int jobGroup; private String jobDesc; private Date addTime; private Date updateTime; - - private String author; // 负责人 - private String alarmEmail; // 报警邮件 + // 负责人 + private String author; + // 报警邮件 + private String alarmEmail; - private String scheduleType; // 调度类型 - private String scheduleConf; // 调度配置,值含义取决于调度类型 - private String misfireStrategy; // 调度过期策略 + // 调度类型 + private String scheduleType; + // 调度配置,值含义取决于调度类型 + private String scheduleConf; + // 调度过期策略 + private String misfireStrategy; - private String executorRouteStrategy; // 执行器路由策略 - private String executorHandler; // 执行器,任务Handler名称 - private String executorParam; // 执行器,任务参数 - private String executorBlockStrategy; // 阻塞处理策略 - private int executorTimeout; // 任务执行超时时间,单位秒 - private int executorFailRetryCount; // 失败重试次数 - - private String glueType; // GLUE类型 #com.xxl.job.core.glue.GlueTypeEnum - private String glueSource; // GLUE源代码 - private String glueRemark; // GLUE备注 - private Date glueUpdatetime; // GLUE更新时间 + // 执行器路由策略 + private String executorRouteStrategy; + // 执行器,任务Handler名称 + private String executorHandler; + // 执行器,任务参数 + private String executorParam; + // 阻塞处理策略 + private String executorBlockStrategy; + // 任务执行超时时间,单位秒 + private int executorTimeout; + // 失败重试次数 + private int executorFailRetryCount; - private String childJobId; // 子任务ID,多个逗号分隔 + // GLUE类型 #com.xxl.job.core.glue.GlueTypeEnum + private String glueType; + // GLUE源代码 + private String glueSource; + // GLUE备注 + private String glueRemark; + // GLUE更新时间 + private Date glueUpdatetime; - private int triggerStatus; // 调度状态:0-停止,1-运行 - private long triggerLastTime; // 上次调度时间 - private long triggerNextTime; // 下次调度时间 + // 子任务ID,多个逗号分隔 + private String childJobId; + + // 调度状态:0-停止,1-运行 + private int triggerStatus; + // 上次调度时间 + private long triggerLastTime; + // 下次调度时间 + private long triggerNextTime; public int getId() { diff --git a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLogGlue.java b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLogGlue.java index 2f59ffa..23bfc03 100644 --- a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLogGlue.java +++ b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobLogGlue.java @@ -9,8 +9,10 @@ import java.util.Date; public class XxlJobLogGlue { private int id; - private int jobId; // 任务主键ID - private String glueType; // GLUE类型 #com.xxl.job.core.glue.GlueTypeEnum + // 任务主键ID + private int jobId; + // GLUE类型 #com.xxl.job.core.glue.GlueTypeEnum + private String glueType; private String glueSource; private String glueRemark; private Date addTime; diff --git a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobUser.java b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobUser.java index db17327..a405318 100644 --- a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobUser.java +++ b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobUser.java @@ -8,10 +8,14 @@ import org.springframework.util.StringUtils; public class XxlJobUser { private int id; - private String username; // 账号 - private String password; // 密码 - private int role; // 角色:0-普通用户、1-管理员 - private String permission; // 权限:执行器ID列表,多个逗号分割 + // 账号 + private String username; + // 密码 + private String password; + // 角色:0-普通用户、1-管理员 + private int role; + // 权限:执行器ID列表,多个逗号分割 + private String permission; public int getId() { return id; diff --git a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java index 523e09d..301f4d1 100644 --- a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java +++ b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java @@ -40,7 +40,8 @@ public class ExecutorRouteLFU extends ExecutorRouter { // put new for (String address: addressList) { if (!lfuItemMap.containsKey(address) || lfuItemMap.get(address) >1000000 ) { - lfuItemMap.put(address, new Random().nextInt(addressList.size())); // 初始化时主动Random一次,缓解首次压力 + // 初始化时主动Random一次,缓解首次压力 + lfuItemMap.put(address, new Random().nextInt(addressList.size())); } } // remove old diff --git a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java index 274ffee..aa61dda 100644 --- a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java +++ b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java @@ -27,7 +27,8 @@ public class JobScheduleHelper { return instance; } - public static final long PRE_READ_MS = 5000; // pre read + // pre read + public static final long PRE_READ_MS = 5000; private Thread scheduleThread; private Thread ringThread; @@ -311,7 +312,8 @@ public class JobScheduleHelper { // 1、stop schedule scheduleThreadToStop = true; try { - TimeUnit.SECONDS.sleep(1); // wait + // wait + TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { logger.error(e.getMessage(), e); } @@ -371,7 +373,8 @@ public class JobScheduleHelper { if (ScheduleTypeEnum.CRON == scheduleTypeEnum) { Date nextValidTime = new CronExpression(jobInfo.getScheduleConf()).getNextValidTimeAfter(fromTime); return nextValidTime; - } else if (ScheduleTypeEnum.FIX_RATE == scheduleTypeEnum /*|| ScheduleTypeEnum.FIX_DELAY == scheduleTypeEnum*/) { + /*|| ScheduleTypeEnum.FIX_DELAY == scheduleTypeEnum*/ + } else if (ScheduleTypeEnum.FIX_RATE == scheduleTypeEnum ) { return new Date(fromTime.getTime() + Integer.valueOf(jobInfo.getScheduleConf())*1000 ); } return null; diff --git a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java index 398713d..5e29fa4 100644 --- a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java +++ b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java @@ -62,8 +62,9 @@ public class JobTriggerPoolHelper { // job timeout count - private volatile long minTim = System.currentTimeMillis()/60000; // ms > min - private volatile ConcurrentMap jobTimeoutCountMap = new ConcurrentHashMap<>(); + // ms > min + private final ConcurrentMap jobTimeoutCountMap = new ConcurrentHashMap<>(); + private volatile long minTim = System.currentTimeMillis()/60000; /** @@ -77,14 +78,15 @@ public class JobTriggerPoolHelper { final String addressList) { // choose thread pool - ThreadPoolExecutor triggerPool_ = fastTriggerPool; + ThreadPoolExecutor triggerPool = fastTriggerPool; AtomicInteger jobTimeoutCount = jobTimeoutCountMap.get(jobId); - if (jobTimeoutCount!=null && jobTimeoutCount.get() > 10) { // job-timeout 10 times in 1 min - triggerPool_ = slowTriggerPool; + // job-timeout 10 times in 1 min + if (jobTimeoutCount!=null && jobTimeoutCount.get() > 10) { + triggerPool = slowTriggerPool; } // trigger - triggerPool_.execute(new Runnable() { + triggerPool.execute(new Runnable() { @Override public void run() { @@ -98,9 +100,9 @@ public class JobTriggerPoolHelper { } finally { // check timeout-count-map - long minTim_now = System.currentTimeMillis()/60000; - if (minTim != minTim_now) { - minTim = minTim_now; + long minTimNow = System.currentTimeMillis()/60000; + if (minTim != minTimNow) { + minTim = minTimNow; jobTimeoutCountMap.clear(); } diff --git a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java index 748befc..34c0089 100644 --- a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java +++ b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java @@ -111,8 +111,10 @@ public class XxlJobTrigger { private static void processTrigger(XxlJobGroup group, XxlJobInfo jobInfo, int finalFailRetryCount, TriggerTypeEnum triggerType, int index, int total){ // param - ExecutorBlockStrategyEnum blockStrategy = ExecutorBlockStrategyEnum.match(jobInfo.getExecutorBlockStrategy(), ExecutorBlockStrategyEnum.SERIAL_EXECUTION); // block strategy - ExecutorRouteStrategyEnum executorRouteStrategyEnum = ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null); // route strategy + // block strategy + ExecutorBlockStrategyEnum blockStrategy = ExecutorBlockStrategyEnum.match(jobInfo.getExecutorBlockStrategy(), ExecutorBlockStrategyEnum.SERIAL_EXECUTION); + // route strategy + ExecutorRouteStrategyEnum executorRouteStrategyEnum = ExecutorRouteStrategyEnum.match(jobInfo.getExecutorRouteStrategy(), null); String shardingParam = (ExecutorRouteStrategyEnum.SHARDING_BROADCAST==executorRouteStrategyEnum)?String.valueOf(index).concat("/").concat(String.valueOf(total)):null; // 1、save log-id diff --git a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java index 2c1a0ac..b09b5dc 100644 --- a/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java +++ b/xxl-job/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java @@ -54,9 +54,12 @@ public class XxlJobServiceImpl implements XxlJobService { // package result Map maps = new HashMap(); - maps.put("recordsTotal", list_count); // 总记录数 - maps.put("recordsFiltered", list_count); // 过滤后的总记录数 - maps.put("data", list); // 分页列表 + // 总记录数 + maps.put("recordsTotal", list_count); + // 过滤后的总记录数 + maps.put("recordsFiltered", list_count); + // 分页列表 + maps.put("data", list); return maps; } @@ -84,12 +87,13 @@ public class XxlJobServiceImpl implements XxlJobService { if (jobInfo.getScheduleConf()==null || !CronExpression.isValidExpression(jobInfo.getScheduleConf())) { return new ReturnT(ReturnT.FAIL_CODE, "Cron"+I18nUtil.getString("system_unvalid")); } - } else if (scheduleTypeEnum == ScheduleTypeEnum.FIX_RATE/* || scheduleTypeEnum == ScheduleTypeEnum.FIX_DELAY*/) { + /* || scheduleTypeEnum == ScheduleTypeEnum.FIX_DELAY*/ + } else if (scheduleTypeEnum == ScheduleTypeEnum.FIX_RATE) { if (jobInfo.getScheduleConf() == null) { return new ReturnT(ReturnT.FAIL_CODE, (I18nUtil.getString("schedule_type")) ); } try { - int fixSecond = Integer.valueOf(jobInfo.getScheduleConf()); + int fixSecond = Integer.parseInt(jobInfo.getScheduleConf()); if (fixSecond < 1) { return new ReturnT(ReturnT.FAIL_CODE, (I18nUtil.getString("schedule_type")+I18nUtil.getString("system_unvalid")) ); } @@ -192,12 +196,13 @@ public class XxlJobServiceImpl implements XxlJobService { if (jobInfo.getScheduleConf()==null || !CronExpression.isValidExpression(jobInfo.getScheduleConf())) { return new ReturnT(ReturnT.FAIL_CODE, "Cron"+I18nUtil.getString("system_unvalid") ); } - } else if (scheduleTypeEnum == ScheduleTypeEnum.FIX_RATE /*|| scheduleTypeEnum == ScheduleTypeEnum.FIX_DELAY*/) { + /*|| scheduleTypeEnum == ScheduleTypeEnum.FIX_DELAY*/ + } else if (scheduleTypeEnum == ScheduleTypeEnum.FIX_RATE) { if (jobInfo.getScheduleConf() == null) { return new ReturnT(ReturnT.FAIL_CODE, (I18nUtil.getString("schedule_type")+I18nUtil.getString("system_unvalid")) ); } try { - int fixSecond = Integer.valueOf(jobInfo.getScheduleConf()); + int fixSecond = Integer.parseInt(jobInfo.getScheduleConf()); if (fixSecond < 1) { return new ReturnT(ReturnT.FAIL_CODE, (I18nUtil.getString("schedule_type")+I18nUtil.getString("system_unvalid")) ); } diff --git a/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/context/XxlJobContext.java b/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/context/XxlJobContext.java index 7e35012..69d5305 100644 --- a/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/context/XxlJobContext.java +++ b/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/context/XxlJobContext.java @@ -68,7 +68,8 @@ public class XxlJobContext { this.shardIndex = shardIndex; this.shardTotal = shardTotal; - this.handleCode = HANDLE_CODE_SUCCESS; // default success + // default success + this.handleCode = HANDLE_CODE_SUCCESS; } public long getJobId() { @@ -109,7 +110,8 @@ public class XxlJobContext { // ---------------------- tool ---------------------- - private static InheritableThreadLocal contextHolder = new InheritableThreadLocal(); // support for child thread of job handler) + // support for child thread of job handler) + private static InheritableThreadLocal contextHolder = new InheritableThreadLocal(); public static void setXxlJobContext(XxlJobContext xxlJobContext){ contextHolder.set(xxlJobContext); diff --git a/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java b/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java index 4719b7b..428f604 100644 --- a/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java +++ b/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java @@ -144,16 +144,17 @@ public class XxlJobExecutor { // fill ip port port = port>0?port: NetUtil.findAvailablePort(9999); - ip = (ip!=null&&ip.trim().length()>0)?ip: IpUtil.getIp(); + ip = (ip!=null&& !ip.trim().isEmpty())?ip: IpUtil.getIp(); // generate address - if (address==null || address.trim().length()==0) { - String ip_port_address = IpUtil.getIpPort(ip, port); // registry-address:default use address to registry , otherwise use ip:port if address is null - address = "http://{ip_port}/".replace("{ip_port}", ip_port_address); + if (address==null || address.trim().isEmpty()) { + // registry-address:default use address to registry , otherwise use ip:port if address is null + String ipPortAddress = IpUtil.getIpPort(ip, port); + address = "http://{ip_port}/".replace("{ip_port}", ipPortAddress); } // accessToken - if (accessToken==null || accessToken.trim().length()==0) { + if (accessToken==null || accessToken.trim().isEmpty()) { logger.warn(">>>>>>>>>>> xxl-job accessToken is empty. To ensure system security, please set the accessToken."); } @@ -245,7 +246,8 @@ public class XxlJobExecutor { newJobThread.start(); logger.info(">>>>>>>>>>> xxl-job regist JobThread success, jobId:{}, handler:{}", new Object[]{jobId, handler}); - JobThread oldJobThread = jobThreadRepository.put(jobId, newJobThread); // putIfAbsent | oh my god, map's put method return the old value!!! + // putIfAbsent | oh my god, map's put method return the old value!!! + JobThread oldJobThread = jobThreadRepository.put(jobId, newJobThread); if (oldJobThread != null) { oldJobThread.toStop(removeOldReason); oldJobThread.interrupt(); diff --git a/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/executor/impl/XxlJobSpringExecutor.java b/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/executor/impl/XxlJobSpringExecutor.java index 953903c..4f42749 100644 --- a/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/executor/impl/XxlJobSpringExecutor.java +++ b/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/executor/impl/XxlJobSpringExecutor.java @@ -96,7 +96,8 @@ public class XxlJobSpringExecutor extends XxlJobExecutor implements ApplicationC } // filter method - Map annotatedMethods = null; // referred to :org.springframework.context.event.EventListenerMethodProcessor.processBean + // referred to :org.springframework.context.event.EventListenerMethodProcessor.processBean + Map annotatedMethods = null; try { annotatedMethods = MethodIntrospector.selectMethods(bean.getClass(), new MethodIntrospector.MetadataLookup() { diff --git a/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/MethodJobHandler.java b/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/MethodJobHandler.java index 2912638..fc5fe65 100644 --- a/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/MethodJobHandler.java +++ b/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/MethodJobHandler.java @@ -26,7 +26,8 @@ public class MethodJobHandler extends IJobHandler { public void execute() throws Exception { Class[] paramTypes = method.getParameterTypes(); if (paramTypes.length > 0) { - method.invoke(target, new Object[paramTypes.length]); // method-param can not be primitive-types + // method-param can not be primitive-types + method.invoke(target, new Object[paramTypes.length]); } else { method.invoke(target); } diff --git a/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java b/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java index ff0585b..2a7c126 100644 --- a/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java +++ b/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java @@ -66,7 +66,8 @@ public class XxlJobFileAppender { public static String makeLogFileName(Date triggerDate, long logId) { // filePath/yyyy-MM-dd - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // avoid concurrent problem, can not be static + // avoid concurrent problem, can not be static + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); File logFilePath = new File(getLogPath(), sdf.format(triggerDate)); if (!logFilePath.exists()) { logFilePath.mkdir(); @@ -157,7 +158,8 @@ public class XxlJobFileAppender { String line = null; while ((line = reader.readLine())!=null) { - toLineNum = reader.getLineNumber(); // [from, to], start as 1 + // [from, to], start as 1 + toLineNum = reader.getLineNumber(); if (toLineNum >= fromLineNum) { logContentBuffer.append(line).append("\n"); } diff --git a/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/thread/JobThread.java b/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/thread/JobThread.java index cf07a55..18c429d 100644 --- a/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/thread/JobThread.java +++ b/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/thread/JobThread.java @@ -27,16 +27,18 @@ import java.util.concurrent.*; public class JobThread extends Thread{ private static Logger logger = LoggerFactory.getLogger(JobThread.class); - private int jobId; - private IJobHandler handler; - private LinkedBlockingQueue triggerQueue; - private Set triggerLogIdSet; // avoid repeat trigger for the same TRIGGER_LOG_ID + private final int jobId; + private final IJobHandler handler; + private final LinkedBlockingQueue triggerQueue; + // avoid repeat trigger for the same TRIGGER_LOG_ID + private final Set triggerLogIdSet; private volatile boolean toStop = false; private String stopReason; - - private boolean running = false; // if running job - private int idleTimes = 0; // idel times + // if running job + private boolean running = false; + // idel times + private int idleTimes = 0; public JobThread(int jobId, IJobHandler handler) { @@ -184,7 +186,8 @@ public class JobThread extends Thread{ } else { if (idleTimes > 30) { - if(triggerQueue.size() == 0) { // avoid concurrent trigger causes jobId-lost + // avoid concurrent trigger causes jobId-lost + if(triggerQueue.size() == 0) { XxlJobExecutor.removeJobThread(jobId, "excutor idel times over limit."); } } diff --git a/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/thread/TriggerCallbackThread.java b/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/thread/TriggerCallbackThread.java index 40acac0..3515408 100644 --- a/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/thread/TriggerCallbackThread.java +++ b/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/thread/TriggerCallbackThread.java @@ -135,7 +135,8 @@ public class TriggerCallbackThread { public void toStop(){ toStop = true; // stop callback, interrupt and wait - if (triggerCallbackThread != null) { // support empty admin address + // support empty admin address + if (triggerCallbackThread != null) { triggerCallbackThread.interrupt(); try { triggerCallbackThread.join(); diff --git a/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/util/ScriptUtil.java b/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/util/ScriptUtil.java index a27e27b..44d74eb 100644 --- a/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/util/ScriptUtil.java +++ b/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/util/ScriptUtil.java @@ -101,7 +101,8 @@ public class ScriptUtil { errThread.start(); // process-wait - int exitValue = process.waitFor(); // exit code: 0=success, 1=error + // exit code: 0=success, 1=error + int exitValue = process.waitFor(); // log-thread join inputThread.join();