Răsfoiți Sursa

【优化】合并PR-3605,避免子任务是任务本身导致死循环;
【修复】合并PR-3585,修复全局密码长度不一致问题;

xuxueli 10 luni în urmă
părinte
comite
90ce467efd

+ 1 - 0
doc/XXL-JOB官方文档.md

@@ -2408,6 +2408,7 @@ public void execute() {
 - 6、【优化】合并PR-3616,代码结构注释优化;
 - 7、【优化】合并PR-3619,避免调度过程中任务停止边界情况处理逻辑;
 - 8、【优化】合并PR-3605,避免子任务是任务本身导致死循环;
+- 9、【修复】合并PR-3585,修复全局密码长度不一致问题;
 
 - 4、[规划中]升级springboot3.x,解决2.x老版本漏洞类问题。注意,springboot3.x依赖jdk17;
 - 5、[规划中]安全功能增强,通讯加密参数改用加密数据避免AccessToken明文, 降低token泄漏风险;

+ 6 - 0
xxl-job-admin/src/main/java/com/xxl/job/admin/core/complete/XxlJobCompleter.java

@@ -56,7 +56,13 @@ public class XxlJobCompleter {
                 for (int i = 0; i < childJobIds.length; i++) {
                     int childJobId = (childJobIds[i]!=null && childJobIds[i].trim().length()>0 && isNumeric(childJobIds[i]))?Integer.valueOf(childJobIds[i]):-1;
                     if (childJobId > 0) {
+                        // valid
+                        if (childJobId == xxlJobLog.getJobId()) {
+                            logger.debug(">>>>>>>>>>> xxl-job, XxlJobCompleter-finishJob ignore childJobId,  childJobId {} is self.", childJobId);
+                            continue;
+                        }
 
+                        // trigger child job
                         JobTriggerPoolHelper.trigger(childJobId, TriggerTypeEnum.PARENT, -1, null, null, null);
                         ReturnT<String> triggerChildResult = ReturnT.SUCCESS;
 

+ 8 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java

@@ -222,7 +222,14 @@ public class XxlJobServiceImpl implements XxlJobService {
 			String[] childJobIds = jobInfo.getChildJobId().split(",");
 			for (String childJobIdItem: childJobIds) {
 				if (childJobIdItem!=null && childJobIdItem.trim().length()>0 && isNumeric(childJobIdItem)) {
-					XxlJobInfo childJobInfo = xxlJobInfoDao.loadById(Integer.parseInt(childJobIdItem));
+					// parse child
+					int childJobId = Integer.parseInt(childJobIdItem);
+					if (childJobId == jobInfo.getId()) {
+						return new ReturnT<String>(ReturnT.FAIL_CODE, (I18nUtil.getString("jobinfo_field_childJobId")+"("+childJobId+")"+I18nUtil.getString("system_unvalid")) );
+					}
+
+					// valid child
+					XxlJobInfo childJobInfo = xxlJobInfoDao.loadById(childJobId);
 					if (childJobInfo==null) {
 						return new ReturnT<String>(ReturnT.FAIL_CODE,
 								MessageFormat.format((I18nUtil.getString("jobinfo_field_childJobId")+"({0})"+I18nUtil.getString("system_not_found")), childJobIdItem));

+ 3 - 3
xxl-job-admin/src/main/resources/static/js/login.1.js

@@ -16,12 +16,12 @@ $(function(){
         	userName : {  
         		required : true ,
                 minlength: 4,
-                maxlength: 18
+                maxlength: 20
             },  
             password : {  
             	required : true ,
                 minlength: 4,
-                maxlength: 18
+                maxlength: 20
             } 
         }, 
         messages : {  
@@ -32,7 +32,7 @@ $(function(){
             password : {
             	required  : I18n.login_password_empty  ,
                 minlength : I18n.login_password_lt_4
-                /*,maxlength:"登录密码不应超过18位"*/
+                /*,maxlength:"登录密码不应超过20位"*/
             }
         }, 
 		highlight : function(element) {  

+ 2 - 2
xxl-job-admin/src/main/resources/templates/login.ftl

@@ -15,11 +15,11 @@
 			<div class="login-box-body">
 				<p class="login-box-msg">${I18n.admin_name}</p>
 				<div class="form-group has-feedback">
-	            	<input type="text" name="userName" class="form-control" placeholder="${I18n.login_username_placeholder}"  maxlength="18" >
+	            	<input type="text" name="userName" class="form-control" placeholder="${I18n.login_username_placeholder}"  maxlength="20" >
 	            	<span class="glyphicon glyphicon-envelope form-control-feedback"></span>
 				</div>
 	          	<div class="form-group has-feedback">
-	            	<input type="password" name="password" class="form-control" placeholder="${I18n.login_password_placeholder}"  maxlength="18" >
+	            	<input type="password" name="password" class="form-control" placeholder="${I18n.login_password_placeholder}"  maxlength="20" >
 	            	<span class="glyphicon glyphicon-lock form-control-feedback"></span>
 	          	</div>
 				<div class="row">