From ca663d9c4e87ee83cc09971701bad3f50a5c3a56 Mon Sep 17 00:00:00 2001 From: "Evan W. Patton" Date: Wed, 1 Oct 2025 11:15:33 -0400 Subject: [PATCH] Implement peak active tasks measure for buildserver Change-Id: I59f457a452c840dac6743c231f37e7fb13972588 --- .../com/google/appinventor/buildserver/BuildServer.java | 1 + .../appinventor/buildserver/NonQueuingExecutor.java | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/BuildServer.java b/appinventor/buildserver/src/com/google/appinventor/buildserver/BuildServer.java index 4f34663f3cc..94753456e8c 100644 --- a/appinventor/buildserver/src/com/google/appinventor/buildserver/BuildServer.java +++ b/appinventor/buildserver/src/com/google/appinventor/buildserver/BuildServer.java @@ -336,6 +336,7 @@ public Response var() throws IOException { maximumActiveBuildTasks = Math.max(maximumActiveBuildTasks, buildExecutor.getActiveTaskCount()); variables.put("maximum-simultaneous-build-tasks-occurred", maximumActiveBuildTasks + ""); variables.put("active-build-tasks", buildExecutor.getActiveTaskCount() + ""); + variables.put("peak-active-build-tasks", buildExecutor.getPeakActiveTaskCount() + ""); return mapToHtml(variables); } diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/NonQueuingExecutor.java b/appinventor/buildserver/src/com/google/appinventor/buildserver/NonQueuingExecutor.java index 927e14bba24..6391f325726 100644 --- a/appinventor/buildserver/src/com/google/appinventor/buildserver/NonQueuingExecutor.java +++ b/appinventor/buildserver/src/com/google/appinventor/buildserver/NonQueuingExecutor.java @@ -8,6 +8,7 @@ import java.util.concurrent.Executor; import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.IntUnaryOperator; import java.util.logging.Logger; /** @@ -22,6 +23,7 @@ final class NonQueuingExecutor implements Executor { // The maximum number of active tasks. O means unlimited. private final int maxActiveTasks; + private final AtomicInteger peakActiveTaskCount = new AtomicInteger(0); private final AtomicInteger activeTaskCount = new AtomicInteger(0); private final AtomicInteger completedTaskCount = new AtomicInteger(0); @@ -54,7 +56,8 @@ public void run() { completedTaskCount.incrementAndGet(); } }); - activeTaskCount.incrementAndGet(); + final int activeTasks = activeTaskCount.incrementAndGet(); + peakActiveTaskCount.getAndUpdate(operand -> Math.max(activeTasks, operand)); thread.start(); } else { @@ -75,4 +78,8 @@ public int getActiveTaskCount() { public int getCompletedTaskCount() { return completedTaskCount.get(); } + + public int getPeakActiveTaskCount() { + return peakActiveTaskCount.get(); + } }