Procházet zdrojové kódy

Merge branch 'master' of http://git.qmth.com.cn/ExamCloud-3/examcloud-web.git

WANG před 5 roky
rodič
revize
f367d5d3de

+ 10 - 6
src/main/java/cn/com/qmth/examcloud/web/actuator/ApiStatusInfoHolder.java

@@ -6,6 +6,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.stream.Collectors;
 
+import org.apache.commons.lang3.RandomUtils;
 import org.springframework.boot.ApplicationArguments;
 import org.springframework.boot.ApplicationRunner;
 import org.springframework.core.annotation.Order;
@@ -59,14 +60,16 @@ public class ApiStatusInfoHolder implements ApplicationRunner {
 	}
 
 	private static synchronized void refresh() {
-
+		long trace = 10000 + RandomUtils.nextLong(0, 89999);
+		LOG.info(trace + " [ApiStatus]. refresh...");
 		running.set(true);
 		try {
 			ReportorHolder.getApiDataReportor().report();
-			List<ReportInfo> reportInfoList = ReportorHolder.getApiDataReportor()
-					.getReportInfoList();
 
-			ReportInfo reportInfo = reportInfoList.get(0);
+			Util.sleep(TimeUnit.MILLISECONDS, 500);
+
+			ReportInfo reportInfo = ReportorHolder.getApiDataReportor().getReportInfo();
+
 			ApiStatusInfoCollector apiStatusInfoCollector = SpringContextHolder
 					.getBean(ApiStatusInfoCollector.class);
 			apiStatusInfoList = apiStatusInfoCollector.collect(reportInfo);
@@ -77,10 +80,11 @@ public class ApiStatusInfoHolder implements ApplicationRunner {
 			apiStatusInfoMap = newApiInfoMap;
 
 		} catch (Exception e) {
-			LOG.error("fail to refresh API status.", e);
+			LOG.info(trace + " [ApiStatus]. fail to refresh API status", e);
 		}
-		Util.sleep(TimeUnit.MILLISECONDS, 500);
+
 		running.set(false);
+		LOG.info(trace + " [ApiStatus]. OVER");
 	}
 
 }

+ 4 - 10
src/main/java/cn/com/qmth/examcloud/web/actuator/DataReportor.java

@@ -106,9 +106,7 @@ public class DataReportor extends ScheduledReporter {
 
 	private final Clock clock;
 
-	private List<ReportInfo> reportInfoList = Lists.newArrayList();
-
-	private int maxReportInfoSize = 10;
+	private ReportInfo reportInfo;
 
 	private DataReportor(MetricRegistry registry, Clock clock, TimeUnit rateUnit,
 			TimeUnit durationUnit, MetricFilter filter, ScheduledExecutorService executor,
@@ -155,11 +153,7 @@ public class DataReportor extends ScheduledReporter {
 			}
 		}
 
-		if (reportInfoList.size() >= maxReportInfoSize) {
-			reportInfoList = reportInfoList.subList(0, maxReportInfoSize);
-		}
-
-		reportInfoList.add(0, info);
+		reportInfo = info;
 	}
 
 	private MeterInfo getMeterInfo(String key, Meter meter) {
@@ -285,8 +279,8 @@ public class DataReportor extends ScheduledReporter {
 		return !getDisabledMetricAttributes().contains(type);
 	}
 
-	public List<ReportInfo> getReportInfoList() {
-		return reportInfoList;
+	public ReportInfo getReportInfo() {
+		return reportInfo;
 	}
 
 }