You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by da...@apache.org on 2021/06/21 08:09:37 UTC
[skywalking] 01/01: eliminate `now` error at a fixed rate schedule
executor
This is an automated email from the ASF dual-hosted git repository.
daming pushed a commit to branch dmsolr-patch-1
in repository https://gitbox.apache.org/repos/asf/skywalking.git
commit 426a4a40bb7d60189a626a14529caf1c498e818d
Author: Daming <zt...@foxmail.com>
AuthorDate: Mon Jun 21 16:09:15 2021 +0800
eliminate `now` error at a fixed rate schedule executor
---
.../prometheus/provider/PrometheusFetcherProvider.java | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/oap-server/server-fetcher-plugin/prometheus-fetcher-plugin/src/main/java/org/apache/skywalking/oap/server/fetcher/prometheus/provider/PrometheusFetcherProvider.java b/oap-server/server-fetcher-plugin/prometheus-fetcher-plugin/src/main/java/org/apache/skywalking/oap/server/fetcher/prometheus/provider/PrometheusFetcherProvider.java
index 2549f13..447c4c7 100644
--- a/oap-server/server-fetcher-plugin/prometheus-fetcher-plugin/src/main/java/org/apache/skywalking/oap/server/fetcher/prometheus/provider/PrometheusFetcherProvider.java
+++ b/oap-server/server-fetcher-plugin/prometheus-fetcher-plugin/src/main/java/org/apache/skywalking/oap/server/fetcher/prometheus/provider/PrometheusFetcherProvider.java
@@ -121,17 +121,22 @@ public class PrometheusFetcherProvider extends ModuleProvider {
}
final MeterSystem service = getManager().find(CoreModule.NAME).provider().getService(MeterSystem.class);
rules.forEach(r -> {
+ final long period = Duration.parse(r.getFetcherInterval()).getSeconds() * 1000;
+
ses.scheduleAtFixedRate(new Runnable() {
private final PrometheusMetricConverter converter = new PrometheusMetricConverter(r, service);
+ private long nextCycleTime = System.currentTimeMillis();
- @Override public void run() {
+ @Override
+ public void run() {
+ final long now = nextCycleTime;
+ nextCycleTime += period;
try (HistogramMetrics.Timer ignored = histogram.createTimer()) {
if (Objects.isNull(r.getStaticConfig())) {
return;
}
StaticConfig sc = r.getStaticConfig();
- long now = System.currentTimeMillis();
converter.toMeter(sc.getTargets().stream()
.map(CheckedFunction1.liftTry(target -> {
URI url = new URI(target.getUrl());
@@ -170,7 +175,7 @@ public class PrometheusFetcherProvider extends ModuleProvider {
log.error(e.getMessage(), e);
}
}
- }, 0L, Duration.parse(r.getFetcherInterval()).getSeconds(), TimeUnit.SECONDS);
+ }, 0L, period, TimeUnit.MILLISECONDS);
});
}