|
@@ -68,7 +68,9 @@ public class CommonDispatcher implements MetricsTaskDispatch, CollectDataDispatc
|
|
|
MetricsCollect metricsCollect = null;
|
|
MetricsCollect metricsCollect = null;
|
|
|
try {
|
|
try {
|
|
|
metricsCollect = jobRequestQueue.getJob();
|
|
metricsCollect = jobRequestQueue.getJob();
|
|
|
- workerPool.executeJob(metricsCollect);
|
|
|
|
|
|
|
+ if (metricsCollect != null) {
|
|
|
|
|
+ workerPool.executeJob(metricsCollect);
|
|
|
|
|
+ }
|
|
|
} catch (RejectedExecutionException rejected) {
|
|
} catch (RejectedExecutionException rejected) {
|
|
|
log.info("[Dispatcher]-the worker pool is full, reject this metrics task, " +
|
|
log.info("[Dispatcher]-the worker pool is full, reject this metrics task, " +
|
|
|
"sleep and put in queue again.");
|
|
"sleep and put in queue again.");
|
|
@@ -119,7 +121,7 @@ public class CommonDispatcher implements MetricsTaskDispatch, CollectDataDispatc
|
|
|
// 将单个应用的采集任务根据其下的指标组拆分为对应的指标组采集任务 AbstractCollect
|
|
// 将单个应用的采集任务根据其下的指标组拆分为对应的指标组采集任务 AbstractCollect
|
|
|
// 将每个指标组放入线程池进行调度
|
|
// 将每个指标组放入线程池进行调度
|
|
|
Job job = timerJob.getJob();
|
|
Job job = timerJob.getJob();
|
|
|
- job.constructMetrics();
|
|
|
|
|
|
|
+ job.constructPriorMetrics();
|
|
|
Set<Metrics> metricsSet = job.getNextCollectMetrics(null, true);
|
|
Set<Metrics> metricsSet = job.getNextCollectMetrics(null, true);
|
|
|
metricsSet.forEach(metrics -> {
|
|
metricsSet.forEach(metrics -> {
|
|
|
MetricsCollect metricsCollect = new MetricsCollect(metrics, timerJob, this);
|
|
MetricsCollect metricsCollect = new MetricsCollect(metrics, timerJob, this);
|
|
@@ -143,6 +145,8 @@ public class CommonDispatcher implements MetricsTaskDispatch, CollectDataDispatc
|
|
|
long spendTime = System.currentTimeMillis() - job.getTimestamp();
|
|
long spendTime = System.currentTimeMillis() - job.getTimestamp();
|
|
|
long interval = job.getInterval() - spendTime / 1000;
|
|
long interval = job.getInterval() - spendTime / 1000;
|
|
|
interval = interval <= 0 ? 0 : interval;
|
|
interval = interval <= 0 ? 0 : interval;
|
|
|
|
|
+ // 重置构造执行指标组视图
|
|
|
|
|
+ job.constructPriorMetrics();
|
|
|
timerDispatch.cyclicJob(timerJob, interval, TimeUnit.SECONDS);
|
|
timerDispatch.cyclicJob(timerJob, interval, TimeUnit.SECONDS);
|
|
|
} else if (!metricsSet.isEmpty()) {
|
|
} else if (!metricsSet.isEmpty()) {
|
|
|
// 当前级别指标组执行完成,开始执行下一级别的指标组
|
|
// 当前级别指标组执行完成,开始执行下一级别的指标组
|