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 908b22dade694e81cd0c404e5a13234f3cbefafe..7d4c3ab4ddb330f4faed876953cc89f77400084b 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 01ddd9f83361988936f41e5e48e0c546796473a8..5c60cd33492c3d20832fddfec4df0f87ebcd9aae 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 4aa39299b3c21cf82dbc3c6de06bd2723c648bd7..c26e11bef9d7254f9f06a48789e2e2a291fc6aa5 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; }