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:36 UTC

[skywalking] branch dmsolr-patch-1 created (now 426a4a4)

This is an automated email from the ASF dual-hosted git repository.

daming pushed a change to branch dmsolr-patch-1
in repository https://gitbox.apache.org/repos/asf/skywalking.git.


      at 426a4a4  eliminate `now` error at a fixed rate schedule executor

This branch includes the following new commits:

     new 426a4a4  eliminate `now` error at a fixed rate schedule executor

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[skywalking] 01/01: eliminate `now` error at a fixed rate schedule executor

Posted by da...@apache.org.
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);
         });
     }