Improve toString for reactive ScheduledTask

Prior to this commit, the reactive Scheduled tasks would be wrapped as a
`SubscribingRunnable` which does not implement a custom `toString`. This
would result in task metadata using the default Java `toString`
representation for those.

This commit ensures that the bean class name and method name are used
for this `toString`.

Closes gh-34010
This commit is contained in:
Brian Clozel
2024-12-03 15:06:27 +01:00
parent 15dcc449a2
commit d990449b0d
2 changed files with 25 additions and 5 deletions

View File

@@ -123,8 +123,9 @@ abstract class ScheduledAnnotationReactiveSupport {
Publisher<?> publisher = getPublisherFor(method, targetBean);
Supplier<ScheduledTaskObservationContext> contextSupplier =
() -> new ScheduledTaskObservationContext(targetBean, method);
String displayName = targetBean.getClass().getName() + "." + method.getName();
return new SubscribingRunnable(publisher, shouldBlock, scheduled.scheduler(),
subscriptionTrackerRegistry, observationRegistrySupplier, contextSupplier);
subscriptionTrackerRegistry, displayName, observationRegistrySupplier, contextSupplier);
}
/**
@@ -192,6 +193,8 @@ abstract class ScheduledAnnotationReactiveSupport {
final boolean shouldBlock;
final String displayName;
@Nullable
private final String qualifier;
@@ -202,12 +205,13 @@ abstract class ScheduledAnnotationReactiveSupport {
final Supplier<ScheduledTaskObservationContext> contextSupplier;
SubscribingRunnable(Publisher<?> publisher, boolean shouldBlock,
@Nullable String qualifier, List<Runnable> subscriptionTrackerRegistry,
Supplier<ObservationRegistry> observationRegistrySupplier,
Supplier<ScheduledTaskObservationContext> contextSupplier) {
@Nullable String qualifier, List<Runnable> subscriptionTrackerRegistry,
String displayName, Supplier<ObservationRegistry> observationRegistrySupplier,
Supplier<ScheduledTaskObservationContext> contextSupplier) {
this.publisher = publisher;
this.shouldBlock = shouldBlock;
this.displayName = displayName;
this.qualifier = qualifier;
this.subscriptionTrackerRegistry = subscriptionTrackerRegistry;
this.observationRegistrySupplier = observationRegistrySupplier;
@@ -253,6 +257,11 @@ abstract class ScheduledAnnotationReactiveSupport {
this.publisher.subscribe(subscriber);
}
}
@Override
public String toString() {
return this.displayName;
}
}