From 34b63ae1358d3176c7b87f067d06d7b1a58f0902 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=99=9F=20Wu=20Sheng?= Date: Sun, 14 Jul 2019 16:13:32 +0800 Subject: [PATCH] Make persistent period configurable. (#3070) --- .../skywalking/oap/server/core/CoreModuleConfig.java | 5 +++++ .../skywalking/oap/server/core/CoreModuleProvider.java | 2 +- .../oap/server/core/storage/PersistenceTimer.java | 8 +++----- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java index 908b22dade..7d4c3ab4dd 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java @@ -38,6 +38,11 @@ public class CoreModuleConfig extends ModuleConfig { @Setter private int maxConcurrentCallsPerConnection; @Setter private int maxMessageSize; private final List downsampling; + /** + * The period of doing data persistence. + * Unit is second. + */ + @Setter private long persistentPeriod = 3; @Setter private boolean enableDataKeeperExecutor = true; @Setter private int recordDataTTL; @Setter private int minuteMetricsDataTTL; diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java index 01ddd9f833..5c60cd3349 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java @@ -179,7 +179,7 @@ public class CoreModuleProvider extends ModuleProvider { this.getManager().find(ClusterModule.NAME).provider().getService(ClusterRegister.class).registerRemote(gRPCServerInstance); } - PersistenceTimer.INSTANCE.start(getManager()); + PersistenceTimer.INSTANCE.start(getManager(), moduleConfig); if (moduleConfig.isEnableDataKeeperExecutor()) { DataTTLKeeperTimer.INSTANCE.start(getManager()); diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/PersistenceTimer.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/PersistenceTimer.java index 4aa39299b3..c26e11bef9 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/PersistenceTimer.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/PersistenceTimer.java @@ -21,6 +21,7 @@ package org.apache.skywalking.oap.server.core.storage; import java.util.*; import java.util.concurrent.*; import org.apache.skywalking.apm.util.RunnableWithExceptionProtection; +import org.apache.skywalking.oap.server.core.CoreModuleConfig; import org.apache.skywalking.oap.server.core.analysis.worker.*; import org.apache.skywalking.oap.server.library.module.ModuleManager; import org.apache.skywalking.oap.server.telemetry.TelemetryModule; @@ -45,11 +46,8 @@ public enum PersistenceTimer { this.debug = System.getProperty("debug") != null; } - public void start(ModuleManager moduleManager) { + public void start(ModuleManager moduleManager, CoreModuleConfig moduleConfig) { logger.info("persistence timer start"); - //TODO timer value config -// final long timeInterval = EsConfig.Es.Persistence.Timer.VALUE * 1000; - final long timeInterval = 3; IBatchDAO batchDAO = moduleManager.find(StorageModule.NAME).provider().getService(IBatchDAO.class); MetricsCreator metricsCreator = moduleManager.find(TelemetryModule.NAME).provider().getService(MetricsCreator.class); @@ -63,7 +61,7 @@ public enum PersistenceTimer { if (!isStarted) { Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate( new RunnableWithExceptionProtection(() -> extractDataAndSave(batchDAO), - t -> logger.error("Extract data and save failure.", t)), 1, timeInterval, TimeUnit.SECONDS); + t -> logger.error("Extract data and save failure.", t)), 1, moduleConfig.getPersistentPeriod(), TimeUnit.SECONDS); this.isStarted = true; } -- GitLab