mirror of
https://github.com/keycloak/keycloak.git
synced 2026-01-09 23:12:06 -03:30
[quarkus-next] Removed exception escaped OTel attribute (#43848)
Closes #43845 Signed-off-by: Martin Bartoš <mabartos@redhat.com>
This commit is contained in:
parent
71160384ca
commit
12d9ec048b
@ -23,6 +23,7 @@ import io.opentelemetry.api.trace.SpanBuilder;
|
|||||||
import io.opentelemetry.api.trace.Tracer;
|
import io.opentelemetry.api.trace.Tracer;
|
||||||
import io.opentelemetry.context.Context;
|
import io.opentelemetry.context.Context;
|
||||||
import io.opentelemetry.context.Scope;
|
import io.opentelemetry.context.Scope;
|
||||||
|
import io.opentelemetry.semconv.incubating.CodeIncubatingAttributes;
|
||||||
import jakarta.enterprise.inject.spi.CDI;
|
import jakarta.enterprise.inject.spi.CDI;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.jboss.resteasy.reactive.common.model.ResourceClass;
|
import org.jboss.resteasy.reactive.common.model.ResourceClass;
|
||||||
@ -57,8 +58,9 @@ public final class KeycloakTracingCustomizer implements HandlerChainCustomizer {
|
|||||||
Tracer myTracer = openTelemetry.getTracer(this.getClass().getName(), Version.VERSION);
|
Tracer myTracer = openTelemetry.getTracer(this.getClass().getName(), Version.VERSION);
|
||||||
SpanBuilder spanBuilder = myTracer.spanBuilder(spanName);
|
SpanBuilder spanBuilder = myTracer.spanBuilder(spanName);
|
||||||
spanBuilder.setParent(Context.current().with(Span.current()));
|
spanBuilder.setParent(Context.current().with(Span.current()));
|
||||||
spanBuilder.setAttribute("code.function", methodName);
|
// for semconv >= 1.32 use CODE_FUNCTION_NAME instead
|
||||||
spanBuilder.setAttribute("code.namespace", className);
|
spanBuilder.setAttribute(CodeIncubatingAttributes.CODE_FUNCTION, methodName);
|
||||||
|
spanBuilder.setAttribute(CodeIncubatingAttributes.CODE_NAMESPACE, className);
|
||||||
Span span = spanBuilder.startSpan();
|
Span span = spanBuilder.startSpan();
|
||||||
requestContext.setProperty("span", span);
|
requestContext.setProperty("span", span);
|
||||||
requestContext.setProperty("scope", span.makeCurrent());
|
requestContext.setProperty("scope", span.makeCurrent());
|
||||||
|
|||||||
@ -18,6 +18,7 @@
|
|||||||
package org.keycloak.quarkus.runtime.tracing;
|
package org.keycloak.quarkus.runtime.tracing;
|
||||||
|
|
||||||
import io.opentelemetry.api.OpenTelemetry;
|
import io.opentelemetry.api.OpenTelemetry;
|
||||||
|
import io.opentelemetry.api.common.AttributeKey;
|
||||||
import io.opentelemetry.api.common.Attributes;
|
import io.opentelemetry.api.common.Attributes;
|
||||||
import io.opentelemetry.api.trace.Span;
|
import io.opentelemetry.api.trace.Span;
|
||||||
import io.opentelemetry.api.trace.SpanBuilder;
|
import io.opentelemetry.api.trace.SpanBuilder;
|
||||||
@ -100,7 +101,7 @@ public class OTelTracingProvider implements TracingProvider {
|
|||||||
public void error(Throwable exception) {
|
public void error(Throwable exception) {
|
||||||
var span = getCurrentSpan();
|
var span = getCurrentSpan();
|
||||||
var exceptionAttributes = Attributes.builder() // based on OTel Semantic Conventions
|
var exceptionAttributes = Attributes.builder() // based on OTel Semantic Conventions
|
||||||
.put(ExceptionAttributes.EXCEPTION_ESCAPED, true)
|
.put(AttributeKey.booleanKey("exception.escaped"), true) // remove once semconv >= 1.32 is used
|
||||||
.put(ExceptionAttributes.EXCEPTION_MESSAGE, exception.getMessage())
|
.put(ExceptionAttributes.EXCEPTION_MESSAGE, exception.getMessage())
|
||||||
.put(ExceptionAttributes.EXCEPTION_TYPE, exception.getClass().getCanonicalName())
|
.put(ExceptionAttributes.EXCEPTION_TYPE, exception.getClass().getCanonicalName())
|
||||||
.put(ExceptionAttributes.EXCEPTION_STACKTRACE, ExceptionUtils.getStackTrace(exception))
|
.put(ExceptionAttributes.EXCEPTION_STACKTRACE, ExceptionUtils.getStackTrace(exception))
|
||||||
|
|||||||
@ -202,8 +202,7 @@ public class OTelTracingProviderTest extends AbstractTestRealmKeycloakTest {
|
|||||||
var exceptionData = (ExceptionEventData) eventData;
|
var exceptionData = (ExceptionEventData) eventData;
|
||||||
var exceptionAttributes = exceptionData.getAttributes();
|
var exceptionAttributes = exceptionData.getAttributes();
|
||||||
assertThat(exceptionAttributes, notNullValue());
|
assertThat(exceptionAttributes, notNullValue());
|
||||||
|
assertThat(exceptionAttributes.get(AttributeKey.booleanKey("exception.escaped")), is(true));
|
||||||
assertThat(exceptionAttributes.get(ExceptionAttributes.EXCEPTION_ESCAPED), is(true));
|
|
||||||
assertThat(exceptionAttributes.get(ExceptionAttributes.EXCEPTION_MESSAGE), is("something bad happened"));
|
assertThat(exceptionAttributes.get(ExceptionAttributes.EXCEPTION_MESSAGE), is("something bad happened"));
|
||||||
assertThat(exceptionAttributes.get(ExceptionAttributes.EXCEPTION_STACKTRACE), not(emptyOrNullString()));
|
assertThat(exceptionAttributes.get(ExceptionAttributes.EXCEPTION_STACKTRACE), not(emptyOrNullString()));
|
||||||
assertThat(exceptionAttributes.get(ExceptionAttributes.EXCEPTION_TYPE), is(RuntimeException.class.getCanonicalName()));
|
assertThat(exceptionAttributes.get(ExceptionAttributes.EXCEPTION_TYPE), is(RuntimeException.class.getCanonicalName()));
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user