Browse Source

Merge remote-tracking branch 'upstream/branch-1.0.2' into 102

pull/2/head
lenboo 6 years ago
parent
commit
fa4caf9b06
  1. 2
      README.md
  2. 2
      escheduler-api/src/main/java/cn/escheduler/api/quartz/QuartzExecutors.java
  3. 6
      escheduler-api/src/main/java/cn/escheduler/api/service/ResourcesService.java
  4. 6
      escheduler-common/src/main/java/cn/escheduler/common/utils/DependentUtils.java
  5. 2
      escheduler-common/src/main/java/cn/escheduler/common/utils/OSUtils.java
  6. 20
      escheduler-common/src/main/java/cn/escheduler/common/utils/dependent/DependentDateUtils.java
  7. 20
      escheduler-common/src/test/java/cn/escheduler/common/utils/DependentUtilsTest.java
  8. 1
      escheduler-dao/src/main/java/cn/escheduler/dao/mapper/ResourceMapperProvider.java
  9. 25
      escheduler-server/src/main/java/cn/escheduler/server/utils/ProcessUtils.java
  10. 8
      escheduler-server/src/main/java/cn/escheduler/server/worker/task/AbstractCommandExecutor.java
  11. 6
      escheduler-server/src/main/java/cn/escheduler/server/worker/task/sql/SqlTask.java
  12. 8
      escheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/commcon.js
  13. 2
      escheduler-ui/src/js/module/i18n/locale/en_US.js
  14. 2
      escheduler-ui/src/js/module/i18n/locale/zh_CN.js

2
README.md

@ -1,4 +1,4 @@
Easy Scheduler Easy Scheduler
============ ============
[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html) [![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)

2
escheduler-api/src/main/java/cn/escheduler/api/quartz/QuartzExecutors.java

@ -230,6 +230,8 @@ public class QuartzExecutors {
if(scheduler.checkExists(jobKey)){ if(scheduler.checkExists(jobKey)){
logger.info("try to delete job, job name: {}, job group name: {},", jobName, jobGroupName); logger.info("try to delete job, job name: {}, job group name: {},", jobName, jobGroupName);
return scheduler.deleteJob(jobKey); return scheduler.deleteJob(jobKey);
}else {
return true;
} }
} catch (SchedulerException e) { } catch (SchedulerException e) {

6
escheduler-api/src/main/java/cn/escheduler/api/service/ResourcesService.java

@ -569,6 +569,7 @@ public class ResourcesService extends BaseService {
* @param resourceId * @param resourceId
* @return * @return
*/ */
@Transactional(value = "TransactionManager",rollbackFor = Exception.class)
public Result updateResourceContent(int resourceId, String content) { public Result updateResourceContent(int resourceId, String content) {
Result result = new Result(); Result result = new Result();
@ -597,6 +598,10 @@ public class ResourcesService extends BaseService {
} }
} }
resource.setSize(content.getBytes().length);
resource.setUpdateTime(new Date());
resourcesMapper.update(resource);
User user = userMapper.queryDetailsById(resource.getUserId()); User user = userMapper.queryDetailsById(resource.getUserId());
String tenantCode = tenantMapper.queryById(user.getTenantId()).getTenantCode(); String tenantCode = tenantMapper.queryById(user.getTenantId()).getTenantCode();
@ -643,6 +648,7 @@ public class ResourcesService extends BaseService {
logger.error("{} is not exist", resourcePath); logger.error("{} is not exist", resourcePath);
result.setCode(Status.HDFS_OPERATION_ERROR.getCode()); result.setCode(Status.HDFS_OPERATION_ERROR.getCode());
result.setMsg(String.format("%s is not exist", resourcePath)); result.setMsg(String.format("%s is not exist", resourcePath));
return result;
} }
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage(), e); logger.error(e.getMessage(), e);

6
escheduler-common/src/main/java/cn/escheduler/common/utils/DependentUtils.java

@ -95,6 +95,9 @@ public class DependentUtils {
case "last7Days": case "last7Days":
result = DependentDateUtils.getLastDayInterval(businessDate, 7); result = DependentDateUtils.getLastDayInterval(businessDate, 7);
break; break;
case "thisWeek":
result = DependentDateUtils.getThisWeekInterval(businessDate);
break;
case "lastWeek": case "lastWeek":
result = DependentDateUtils.getLastWeekInterval(businessDate); result = DependentDateUtils.getLastWeekInterval(businessDate);
break; break;
@ -119,6 +122,9 @@ public class DependentUtils {
case "lastSunday": case "lastSunday":
result = DependentDateUtils.getLastWeekOneDayInterval(businessDate, 7); result = DependentDateUtils.getLastWeekOneDayInterval(businessDate, 7);
break; break;
case "thisMonth":
result = DependentDateUtils.getThisMonthInterval(businessDate);
break;
case "lastMonth": case "lastMonth":
result = DependentDateUtils.getLastMonthInterval(businessDate); result = DependentDateUtils.getLastMonthInterval(businessDate);
break; break;

2
escheduler-common/src/main/java/cn/escheduler/common/utils/OSUtils.java

@ -220,7 +220,7 @@ public class OSUtils {
* @throws IOException * @throws IOException
*/ */
public static String exeShell(String command) throws IOException { public static String exeShell(String command) throws IOException {
return ShellExecutor.execCommand("groups"); return ShellExecutor.execCommand(command);
} }
/** /**

20
escheduler-common/src/main/java/cn/escheduler/common/utils/dependent/DependentDateUtils.java

@ -76,6 +76,16 @@ public class DependentDateUtils {
return dateIntervals; return dateIntervals;
} }
/**
* get interval between this month first day and businessDate
* @param businessDate
* @return
*/
public static List<DateInterval> getThisMonthInterval(Date businessDate) {
Date firstDay = DateUtils.getFirstDayOfMonth(businessDate);
return getDateIntervalListBetweenTwoDates(firstDay, businessDate);
}
/** /**
* get interval between last month first day and last day * get interval between last month first day and last day
* @param businessDate * @param businessDate
@ -108,6 +118,16 @@ public class DependentDateUtils {
} }
} }
/**
* get interval between monday to businessDate of this week
* @param businessDate
* @return
*/
public static List<DateInterval> getThisWeekInterval(Date businessDate) {
Date mondayThisWeek = DateUtils.getMonday(businessDate);
return getDateIntervalListBetweenTwoDates(mondayThisWeek, businessDate);
}
/** /**
* get interval between monday to sunday of last week * get interval between monday to sunday of last week
* default set monday the first day of week * default set monday the first day of week

20
escheduler-common/src/test/java/cn/escheduler/common/utils/DependentUtilsTest.java

@ -80,6 +80,26 @@ public class DependentUtilsTest {
Assert.assertEquals(dateIntervals.get(0), diCur); Assert.assertEquals(dateIntervals.get(0), diCur);
dateValue = "thisWeek";
Date firstWeekDay = DateUtils.getMonday(curDay);
dateIntervals = DependentUtils.getDateIntervalList(curDay, dateValue);
DateInterval weekHead = new DateInterval(DateUtils.getStartOfDay(firstWeekDay), DateUtils.getEndOfDay(firstWeekDay));
DateInterval weekThis = new DateInterval(DateUtils.getStartOfDay(curDay), DateUtils.getEndOfDay(curDay));
Assert.assertEquals(dateIntervals.get(0), weekHead);
Assert.assertEquals(dateIntervals.get(dateIntervals.size() - 1), weekThis);
dateValue = "thisMonth";
Date firstMonthDay = DateUtils.getFirstDayOfMonth(curDay);
dateIntervals = DependentUtils.getDateIntervalList(curDay, dateValue);
DateInterval monthHead = new DateInterval(DateUtils.getStartOfDay(firstMonthDay), DateUtils.getEndOfDay(firstMonthDay));
DateInterval monthThis = new DateInterval(DateUtils.getStartOfDay(curDay), DateUtils.getEndOfDay(curDay));
Assert.assertEquals(dateIntervals.get(0), monthHead);
Assert.assertEquals(dateIntervals.get(dateIntervals.size() - 1), monthThis);
} }

1
escheduler-dao/src/main/java/cn/escheduler/dao/mapper/ResourceMapperProvider.java

@ -118,6 +118,7 @@ public class ResourceMapperProvider {
SET("`alias` = #{resource.alias}"); SET("`alias` = #{resource.alias}");
SET("`desc` = #{resource.desc}"); SET("`desc` = #{resource.desc}");
SET("`update_time` = #{resource.updateTime}"); SET("`update_time` = #{resource.updateTime}");
SET("`size` = #{resource.size}");
WHERE("`id` = #{resource.id}"); WHERE("`id` = #{resource.id}");
}}.toString(); }}.toString();
} }

25
escheduler-server/src/main/java/cn/escheduler/server/utils/ProcessUtils.java

@ -18,6 +18,7 @@ package cn.escheduler.server.utils;
import cn.escheduler.common.Constants; import cn.escheduler.common.Constants;
import cn.escheduler.common.utils.CommonUtils; import cn.escheduler.common.utils.CommonUtils;
import cn.escheduler.common.utils.OSUtils;
import cn.escheduler.dao.model.TaskInstance; import cn.escheduler.dao.model.TaskInstance;
import cn.escheduler.server.rpc.LogClient; import cn.escheduler.server.rpc.LogClient;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
@ -33,6 +34,7 @@ import java.util.List;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
/** /**
* mainly used to get the start command line of a process * mainly used to get the start command line of a process
*/ */
@ -139,6 +141,8 @@ public class ProcessUtils {
{' ', '\t', '<', '>'}, {' ', '\t'}}; {' ', '\t', '<', '>'}, {' ', '\t'}};
private static Matcher matcher;
private static String createCommandLine(int verificationType, final String executablePath, final String[] cmd) { private static String createCommandLine(int verificationType, final String executablePath, final String[] cmd) {
StringBuilder cmdbuf = new StringBuilder(80); StringBuilder cmdbuf = new StringBuilder(80);
@ -256,11 +260,11 @@ public class ProcessUtils {
return ; return ;
} }
String cmd = String.format("sudo kill -9 %d", processId); String cmd = String.format("sudo kill -9 %s", getPidsStr(processId));
logger.info("process id:{}, cmd:{}", processId, cmd); logger.info("process id:{}, cmd:{}", processId, cmd);
Runtime.getRuntime().exec(cmd); OSUtils.exeCmd(cmd);
// find log and kill yarn job // find log and kill yarn job
killYarnJob(taskInstance); killYarnJob(taskInstance);
@ -270,6 +274,23 @@ public class ProcessUtils {
} }
} }
/**
* get pids str
* @param processId
* @return
* @throws Exception
*/
private static String getPidsStr(int processId)throws Exception{
StringBuilder sb = new StringBuilder();
// pstree -p pid get sub pids
String pids = OSUtils.exeCmd("pstree -p " +processId+ "");
Matcher mat = Pattern.compile("(\\d+)").matcher(pids);
while (mat.find()){
sb.append(mat.group()+" ");
}
return sb.toString().trim();
}
/** /**
* find logs and kill yarn tasks * find logs and kill yarn tasks
* @param taskInstance * @param taskInstance

8
escheduler-server/src/main/java/cn/escheduler/server/worker/task/AbstractCommandExecutor.java

@ -213,7 +213,7 @@ public abstract class AbstractCommandExecutor {
*/ */
private int updateState(ProcessDao processDao, int exitStatusCode, int pid, int taskInstId) { private int updateState(ProcessDao processDao, int exitStatusCode, int pid, int taskInstId) {
//get yarn state by log //get yarn state by log
if (exitStatusCode != -1) { if (exitStatusCode != 0) {
TaskInstance taskInstance = processDao.findTaskInstanceById(taskInstId); TaskInstance taskInstance = processDao.findTaskInstanceById(taskInstId);
logger.info("process id is {}", pid); logger.info("process id is {}", pid);
@ -556,10 +556,4 @@ public abstract class AbstractCommandExecutor {
protected abstract boolean checkShowLog(String line); protected abstract boolean checkShowLog(String line);
protected abstract boolean checkFindApp(String line); protected abstract boolean checkFindApp(String line);
protected abstract void createCommandFileIfNotExists(String execCommand, String commandFile) throws IOException; protected abstract void createCommandFileIfNotExists(String execCommand, String commandFile) throws IOException;
// if(line.contains(taskAppId) || !line.contains("cn.escheduler.server.worker.log.TaskLogger")){
// logs.add(line);
// }
} }

6
escheduler-server/src/main/java/cn/escheduler/server/worker/task/sql/SqlTask.java

@ -347,14 +347,14 @@ public class SqlTask extends AbstractTask {
// receiving group list // receiving group list
List<String> receviersList = new ArrayList<String>(); List<String> receviersList = new ArrayList<String>();
for(User user:users){ for(User user:users){
receviersList.add(user.getEmail()); receviersList.add(user.getEmail().trim());
} }
// custom receiver // custom receiver
String receivers = sqlParameters.getReceivers(); String receivers = sqlParameters.getReceivers();
if (StringUtils.isNotEmpty(receivers)){ if (StringUtils.isNotEmpty(receivers)){
String[] splits = receivers.split(Constants.COMMA); String[] splits = receivers.split(Constants.COMMA);
for (String receiver : splits){ for (String receiver : splits){
receviersList.add(receiver); receviersList.add(receiver.trim());
} }
} }
@ -365,7 +365,7 @@ public class SqlTask extends AbstractTask {
if (StringUtils.isNotEmpty(receiversCc)){ if (StringUtils.isNotEmpty(receiversCc)){
String[] splits = receiversCc.split(Constants.COMMA); String[] splits = receiversCc.split(Constants.COMMA);
for (String receiverCc : splits){ for (String receiverCc : splits){
receviersCcList.add(receiverCc); receviersCcList.add(receiverCc.trim());
} }
} }

8
escheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/commcon.js

@ -64,6 +64,10 @@ const dateValueList = {
} }
], ],
'week': [ 'week': [
{
value: 'thisWeek',
label: `${i18n.$t('ThisWeek')}`
},
{ {
value: 'lastWeek', value: 'lastWeek',
label: `${i18n.$t('LastWeek')}` label: `${i18n.$t('LastWeek')}`
@ -98,6 +102,10 @@ const dateValueList = {
} }
], ],
'month': [ 'month': [
{
value: 'thisMonth',
label: `${i18n.$t('ThisMonth')}`
},
{ {
value: 'lastMonth', value: 'lastMonth',
label: `${i18n.$t('LastMonth')}` label: `${i18n.$t('LastMonth')}`

2
escheduler-ui/src/js/module/i18n/locale/en_US.js

@ -395,6 +395,7 @@ export default {
'Last2Days': 'Last2Days', 'Last2Days': 'Last2Days',
'Last3Days': 'Last3Days', 'Last3Days': 'Last3Days',
'Last7Days': 'Last7Days', 'Last7Days': 'Last7Days',
'ThisWeek': 'ThisWeek',
'LastWeek': 'LastWeek', 'LastWeek': 'LastWeek',
'LastMonday': 'LastMonday', 'LastMonday': 'LastMonday',
'LastTuesday': 'LastTuesday', 'LastTuesday': 'LastTuesday',
@ -403,6 +404,7 @@ export default {
'LastFriday': 'LastFriday', 'LastFriday': 'LastFriday',
'LastSaturday': 'LastSaturday', 'LastSaturday': 'LastSaturday',
'LastSunday': 'LastSunday', 'LastSunday': 'LastSunday',
'ThisMonth': 'ThisMonth',
'LastMonth': 'LastMonth', 'LastMonth': 'LastMonth',
'LastMonthBegin': 'LastMonthBegin', 'LastMonthBegin': 'LastMonthBegin',
'LastMonthEnd': 'LastMonthEnd', 'LastMonthEnd': 'LastMonthEnd',

2
escheduler-ui/src/js/module/i18n/locale/zh_CN.js

@ -395,6 +395,7 @@ export default {
'Last2Days': '前两天', 'Last2Days': '前两天',
'Last3Days': '前三天', 'Last3Days': '前三天',
'Last7Days': '前七天', 'Last7Days': '前七天',
'ThisWeek': '本周',
'LastWeek': '上周', 'LastWeek': '上周',
'LastMonday': '上周一', 'LastMonday': '上周一',
'LastTuesday': '上周二', 'LastTuesday': '上周二',
@ -403,6 +404,7 @@ export default {
'LastFriday': '上周五', 'LastFriday': '上周五',
'LastSaturday': '上周六', 'LastSaturday': '上周六',
'LastSunday': '上周日', 'LastSunday': '上周日',
'ThisMonth': '本月',
'LastMonth': '上月', 'LastMonth': '上月',
'LastMonthBegin': '上月初', 'LastMonthBegin': '上月初',
'LastMonthEnd': '上月末', 'LastMonthEnd': '上月末',

Loading…
Cancel
Save