From 6b43c2065b906bdc9548344870b37579fb2ac207 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Camacho=20Rodr=C3=ADguez?= Date: Tue, 1 Oct 2024 12:12:37 -0700 Subject: [PATCH] Record expected task start time in telemetry (#343) --- .../lst_bench/common/SessionExecutor.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/com/microsoft/lst_bench/common/SessionExecutor.java b/core/src/main/java/com/microsoft/lst_bench/common/SessionExecutor.java index f6741369..4165de79 100644 --- a/core/src/main/java/com/microsoft/lst_bench/common/SessionExecutor.java +++ b/core/src/main/java/com/microsoft/lst_bench/common/SessionExecutor.java @@ -105,6 +105,8 @@ private void handleTasksExecution(Connection connection, int maxConcurrentTasks) List> results = new ArrayList<>(); try { for (TaskExec task : session.getTasks()) { + long delay = ObjectUtils.defaultIfNull(task.getStart(), 0L); + Instant expectedStartTime = Instant.now().plusMillis(delay); Future result = executor.schedule( () -> { @@ -115,13 +117,21 @@ private void handleTasksExecution(Connection connection, int maxConcurrentTasks) taskExecutor.executeTask(connection, task, values); } catch (Exception e) { LOGGER.error("Exception executing task: {}", task.getId()); - writeTaskEvent(taskStartTime, task.getId(), Status.FAILURE); + writeTaskEvent( + taskStartTime, + task.getId(), + Status.FAILURE, + "{expectedStartTime=" + expectedStartTime + "}"); throw e; } - writeTaskEvent(taskStartTime, task.getId(), Status.SUCCESS); + writeTaskEvent( + taskStartTime, + task.getId(), + Status.SUCCESS, + "{expectedStartTime=" + expectedStartTime + "}"); return true; }, - ObjectUtils.defaultIfNull(task.getStart(), 0L), + delay, TimeUnit.MILLISECONDS); results.add(result); } @@ -192,10 +202,11 @@ private EventInfo writeSessionEvent(Instant startTime, String id, Status status) return eventInfo; } - private EventInfo writeTaskEvent(Instant startTime, String id, Status status) { + private EventInfo writeTaskEvent(Instant startTime, String id, Status status, String payload) { EventInfo eventInfo = ImmutableEventInfo.of( - experimentStartTime, startTime, Instant.now(), id, EventType.EXEC_TASK, status); + experimentStartTime, startTime, Instant.now(), id, EventType.EXEC_TASK, status) + .withPayload(payload); telemetryRegistry.writeEvent(eventInfo); return eventInfo; }