mirror of
https://github.com/keycloak/keycloak.git
synced 2025-12-21 06:20:05 -06:00
Close spans in the exceptional path
Closes #41469 Signed-off-by: Alexander Schwartz <aschwart@redhat.com>
This commit is contained in:
committed by
GitHub
parent
ff4d4233f4
commit
8634cdaa4a
@@ -47,6 +47,7 @@ import io.quarkus.hibernate.orm.deployment.spi.AdditionalJpaModelBuildItem;
|
||||
import io.quarkus.narayana.jta.runtime.TransactionManagerBuildTimeConfig;
|
||||
import io.quarkus.narayana.jta.runtime.TransactionManagerBuildTimeConfig.UnsafeMultipleLastResourcesMode;
|
||||
import io.quarkus.resteasy.reactive.server.spi.MethodScannerBuildItem;
|
||||
import io.quarkus.resteasy.reactive.server.spi.PreExceptionMapperHandlerBuildItem;
|
||||
import io.quarkus.runtime.configuration.ConfigurationException;
|
||||
import io.quarkus.vertx.http.deployment.HttpRootPathBuildItem;
|
||||
import io.quarkus.vertx.http.deployment.NonApplicationRootPathBuildItem;
|
||||
@@ -654,7 +655,8 @@ class KeycloakProcessor {
|
||||
@BuildStep
|
||||
void configureResteasy(CombinedIndexBuildItem index,
|
||||
BuildProducer<BuildTimeConditionBuildItem> buildTimeConditionBuildItemBuildProducer,
|
||||
BuildProducer<MethodScannerBuildItem> scanner) {
|
||||
BuildProducer<MethodScannerBuildItem> scanner,
|
||||
BuildProducer<PreExceptionMapperHandlerBuildItem> preExceptionMapperHandlerBuildItemBuildProducer) {
|
||||
if (!Profile.isFeatureEnabled(Profile.Feature.ADMIN_API)) {
|
||||
buildTimeConditionBuildItemBuildProducer.produce(new BuildTimeConditionBuildItem(index.getIndex().getClassByName(DotName.createSimple(
|
||||
AdminRoot.class.getName())), false));
|
||||
@@ -671,6 +673,10 @@ class KeycloakProcessor {
|
||||
|
||||
if (Configuration.isTrue(TracingOptions.TRACING_ENABLED)) {
|
||||
chainCustomizers.add(new KeycloakTracingCustomizer());
|
||||
// Exception handler is necessary to handle exceptions that are thrown by the bean methods,
|
||||
// otherwise the spans will not be closed.
|
||||
preExceptionMapperHandlerBuildItemBuildProducer
|
||||
.produce(new PreExceptionMapperHandlerBuildItem(new KeycloakTracingCustomizer.EndHandler()));
|
||||
}
|
||||
|
||||
scanner.produce(new MethodScannerBuildItem(new MethodScanner() {
|
||||
|
||||
@@ -65,7 +65,7 @@ public final class KeycloakTracingCustomizer implements HandlerChainCustomizer {
|
||||
}
|
||||
}
|
||||
|
||||
private static class EndHandler implements ServerRestHandler {
|
||||
public static class EndHandler implements ServerRestHandler {
|
||||
@Override
|
||||
public void handle(ResteasyReactiveRequestContext requestContext) {
|
||||
Scope scope = (Scope) requestContext.getProperty("scope");
|
||||
|
||||
Reference in New Issue
Block a user