From 6d73a1ceab2d666da9906dfaf5ee8f346a83d427 Mon Sep 17 00:00:00 2001 From: Mahmoud Ben Hassine Date: Wed, 5 Oct 2022 07:10:08 +0200 Subject: [PATCH] ReApply "Adapt observability code to latest changes in Micrometer" This reverts commit a774fac1b3afcaab06c28d65a59030e8fd2db592. --- .../core/observability/BatchJobContext.java | 9 ++++++++- .../observability/BatchJobObservation.java | 4 ++-- .../core/observability/BatchMetrics.java | 20 +++++++++++++++++-- .../core/observability/BatchStepContext.java | 9 ++++++++- .../observability/BatchStepObservation.java | 4 ++-- 5 files changed, 38 insertions(+), 8 deletions(-) diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/observability/BatchJobContext.java b/spring-batch-core/src/main/java/org/springframework/batch/core/observability/BatchJobContext.java index 46a1c4473..4c593fd3f 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/observability/BatchJobContext.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/observability/BatchJobContext.java @@ -20,13 +20,15 @@ import io.micrometer.observation.Observation; import org.springframework.batch.core.JobExecution; +import java.util.function.Supplier; + /** * Observation context for batch jobs. * * @author Marcin Grzejszczak * @since 5.0 */ -public class BatchJobContext extends Observation.Context { +public class BatchJobContext extends Observation.Context implements Supplier { private final JobExecution jobExecution; @@ -38,4 +40,9 @@ public class BatchJobContext extends Observation.Context { return jobExecution; } + @Override + public BatchJobContext get() { + return this; + } + } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/observability/BatchJobObservation.java b/spring-batch-core/src/main/java/org/springframework/batch/core/observability/BatchJobObservation.java index f2a227be8..75132a745 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/observability/BatchJobObservation.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/observability/BatchJobObservation.java @@ -17,7 +17,7 @@ package org.springframework.batch.core.observability; import io.micrometer.common.docs.KeyName; -import io.micrometer.observation.docs.DocumentedObservation; +import io.micrometer.observation.docs.ObservationDocumentation; /** * Observation created around a Job execution. @@ -26,7 +26,7 @@ import io.micrometer.observation.docs.DocumentedObservation; * @author Mahmoud Ben Hassine * @since 5.0 */ -public enum BatchJobObservation implements DocumentedObservation { +public enum BatchJobObservation implements ObservationDocumentation { BATCH_JOB_OBSERVATION { @Override diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/observability/BatchMetrics.java b/spring-batch-core/src/main/java/org/springframework/batch/core/observability/BatchMetrics.java index 773c6e536..841f76e6a 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/observability/BatchMetrics.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/observability/BatchMetrics.java @@ -90,11 +90,27 @@ public final class BatchMetrics { * {@code Metrics.globalRegistry.withTimerObservationHandler()} in the user code. * Otherwise you won't observe any metrics. * @param name of the observation - * @param context of the observation + * @param context of the batch job observation * @return a new observation instance * @since 5.0 */ - public static Observation createObservation(String name, Observation.Context context) { + public static Observation createObservation(String name, BatchJobContext context) { + return Observation.createNotStarted(name, context, observationRegistry); + } + + /** + * Create a new {@link Observation}. It's not started, you must explicitly call + * {@link Observation#start()} to start it. + * + * Remember to register the {@link DefaultMeterObservationHandler} via the + * {@code Metrics.globalRegistry.withTimerObservationHandler()} in the user code. + * Otherwise you won't observe any metrics. + * @param name of the observation + * @param context of the observation step context + * @return a new observation instance + * @since 5.0 + */ + public static Observation createObservation(String name, BatchStepContext context) { return Observation.createNotStarted(name, context, observationRegistry); } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/observability/BatchStepContext.java b/spring-batch-core/src/main/java/org/springframework/batch/core/observability/BatchStepContext.java index 4439580a4..7b1a3a0bd 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/observability/BatchStepContext.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/observability/BatchStepContext.java @@ -20,13 +20,15 @@ import io.micrometer.observation.Observation; import org.springframework.batch.core.StepExecution; +import java.util.function.Supplier; + /** * Observation context for batch steps. * * @author Marcin Grzejszczak * @since 5.0 */ -public class BatchStepContext extends Observation.Context { +public class BatchStepContext extends Observation.Context implements Supplier { private final StepExecution stepExecution; @@ -38,4 +40,9 @@ public class BatchStepContext extends Observation.Context { return stepExecution; } + @Override + public BatchStepContext get() { + return this; + } + } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/observability/BatchStepObservation.java b/spring-batch-core/src/main/java/org/springframework/batch/core/observability/BatchStepObservation.java index 581577999..7244fe02b 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/observability/BatchStepObservation.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/observability/BatchStepObservation.java @@ -17,7 +17,7 @@ package org.springframework.batch.core.observability; import io.micrometer.common.docs.KeyName; -import io.micrometer.observation.docs.DocumentedObservation; +import io.micrometer.observation.docs.ObservationDocumentation; /** * Observation created around a step execution. @@ -26,7 +26,7 @@ import io.micrometer.observation.docs.DocumentedObservation; * @author Mahmoud Ben Hassine * @since 5.0 */ -public enum BatchStepObservation implements DocumentedObservation { +public enum BatchStepObservation implements ObservationDocumentation { BATCH_STEP_OBSERVATION { @Override