package com.vip.saturn.job.executor;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.vip.saturn.job.basic.AbstractSaturnService;
import com.vip.saturn.job.basic.JobScheduler;
import com.vip.saturn.job.sharding.node.SaturnExecutorsNode;
import com.vip.saturn.job.utils.SystemEnvProperties;
/**
*
* @author xiaopeng.he
*
*/
public class LimitMaxJobsService extends AbstractSaturnService {
static Logger log = LoggerFactory.getLogger(LimitMaxJobsService.class);
public LimitMaxJobsService(final JobScheduler jobScheduler) {
super(jobScheduler);
}
/**
* 如果当前作业为新增作业,而且超出该域最大作业数量限制,将打印警告日志,返回false;否则返回true。
* @param jobName 新增作业名
* @return 是否超出
*/
public boolean check(String jobName) {
List<String> childrenKeys = coordinatorRegistryCenter.getChildrenKeys(SaturnExecutorsNode.$JOBSNODE_PATH);
if(childrenKeys != null && !childrenKeys.isEmpty() && !childrenKeys.contains(jobName) && childrenKeys.size() >= SystemEnvProperties.VIP_SATURN_MAX_NUMBER_OF_JOBS) {
log.warn("The jobs that are under the namespace exceed {}", SystemEnvProperties.VIP_SATURN_MAX_NUMBER_OF_JOBS);
return false;
}
return true;
}
}