Make persistent period configurable. (#3070)

This commit is contained in:
吴晟 Wu Sheng 2019-07-14 16:13:32 +08:00 committed by GitHub
parent 1d13d735bb
commit 34b63ae135
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 6 deletions

View File

@ -38,6 +38,11 @@ public class CoreModuleConfig extends ModuleConfig {
@Setter private int maxConcurrentCallsPerConnection;
@Setter private int maxMessageSize;
private final List<String> 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;

View File

@ -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());

View File

@ -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;
}