You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@baremaps.apache.org by bc...@apache.org on 2023/09/28 19:44:10 UTC

[incubator-baremaps] 09/35: Fix incorect durations in workflow

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

bchapuis pushed a commit to branch 745-daylight
in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git

commit 2ff084c13416607b24cc903be410c3e4ccf04c12
Author: Bertil Chapuis <bc...@gmail.com>
AuthorDate: Mon Aug 28 14:43:20 2023 +0200

    Fix incorect durations in workflow
---
 .../apache/baremaps/workflow/WorkflowExecutor.java | 47 +++++++++++++---------
 1 file changed, 29 insertions(+), 18 deletions(-)

diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowExecutor.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowExecutor.java
index 6e0a1a77..6367a254 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowExecutor.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowExecutor.java
@@ -205,28 +205,39 @@ public class WorkflowExecutor implements AutoCloseable {
    */
   private void logStepMeasures() {
     logger.info("----------------------------------------");
+
     var workflowStart = stepMeasures.stream()
-        .mapToLong(measures -> measures.stepMeasures.stream()
-            .mapToLong(measure -> measure.start)
-            .min().orElseGet(() -> 0L))
-        .min().orElseGet(() -> 0L);
+            .flatMapToLong(measures -> measures.stepMeasures.stream()
+                .mapToLong(measure -> measure.start))
+            .min();
+
     var workflowEnd = stepMeasures.stream()
-        .mapToLong(measures -> measures.stepMeasures.stream()
-            .mapToLong(measure -> measure.end)
-            .max().orElseGet(() -> 0L))
-        .max().orElseGet(() -> 0L);
-    var workflowDuration = Duration.ofMillis(workflowEnd - workflowStart);
-    logger.info("Workflow graph: {}", this.graph);
-    logger.info("  Duration: {}", formatDuration(workflowDuration));
+            .flatMapToLong(measures -> measures.stepMeasures.stream()
+                .mapToLong(measure -> measure.end))
+            .max();
+
+    if (workflowStart.isPresent() && workflowEnd.isPresent()) {
+      var workflowDuration = Duration.ofMillis(workflowEnd.getAsLong() - workflowStart.getAsLong());
+      logger.info("Workflow graph: {}", this.graph);
+      logger.info("  Duration: {}", formatDuration(workflowDuration));
+    } else {
+      logger.info("Workflow graph: {}", this.graph);
+      logger.info("  Duration: unknown");
+    }
 
     for (var stepMeasure : this.stepMeasures) {
-      var stepStart =
-          stepMeasure.stepMeasures.stream().mapToLong(measure -> measure.start).min().getAsLong();
-      var stepEnd =
-          stepMeasure.stepMeasures.stream().mapToLong(measure -> measure.end).max().getAsLong();
-      var stepDuration = Duration.ofMillis(stepEnd - stepStart);
-      logger.info("Step: {}, Duration: {} ms", stepMeasure.step.getId(),
-          formatDuration(stepDuration));
+      var stepStart = stepMeasure.stepMeasures.stream()
+                  .mapToLong(measure -> measure.start).min();
+      var stepEnd = stepMeasure.stepMeasures.stream()
+              .mapToLong(measure -> measure.end).max();
+
+      if (stepStart.isPresent() && stepEnd.isPresent()) {
+        var stepDuration = Duration.ofMillis(stepEnd.getAsLong() - stepStart.getAsLong());
+        logger.info("Step: {}, Duration: {} ms", stepMeasure.step.getId(),
+            formatDuration(stepDuration));
+      } else {
+        logger.info("Step: {}, Duration: unknown", stepMeasure.step.getId());
+      }
 
       for (var taskMeasure : stepMeasure.stepMeasures) {
         var taskDuration = Duration.ofMillis(taskMeasure.end - taskMeasure.start);