package com.vip.saturn.job.internal.statistics; import com.vip.saturn.job.basic.JobRegistry; import com.vip.saturn.job.basic.JobScheduler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Iterator; import java.util.Map; import java.util.TimerTask; import java.util.concurrent.ConcurrentHashMap; /** * 执行统计信息清零的动作 * * @author linzhaoming * */ public class ProcessCountResetTask extends TimerTask { static Logger log = LoggerFactory.getLogger(ProcessCountResetTask.class); private String executorName; public ProcessCountResetTask(String executorName) { this.executorName = executorName; } @Override public void run() { Map<String, ConcurrentHashMap<String, JobScheduler>> schedulerMap = JobRegistry.getSchedulerMap(); if(schedulerMap != null) { // 只清零本executor的统计信息数据 if(schedulerMap.containsKey(executorName)) { ConcurrentHashMap<String, JobScheduler> jobSchedulerMap = schedulerMap.get(executorName); if(jobSchedulerMap != null) { Iterator<Map.Entry<String, JobScheduler>> iterator = jobSchedulerMap.entrySet().iterator(); while(iterator.hasNext()) { Map.Entry<String, JobScheduler> next = iterator.next(); String jobName = next.getKey(); JobScheduler jobScheduler = next.getValue(); // 清零内存统计值 ProcessCountStatistics.resetSuccessFailureCount(executorName, jobName); // 清零zk统计值 jobScheduler.getServerService().persistProcessFailureCount(0); jobScheduler.getServerService().persistProcessSuccessCount(0); log.info("msg={} reset the job {}'s statistics data", executorName, jobName); } } } } } }