-
Notifications
You must be signed in to change notification settings - Fork 155
Open
Labels
bugSomething isn't workingSomething isn't working
Description
I have a very strange problem where I get an exception that only happens in unit tests. When I run the application normally, the exception does not show up. This behaviour only shows up after adding a guard rail (either input or output, both will trigger this behaviour) to my application.
I am aware this all sounds very vague, my apologies for that. I'm trying to make a small reproducer but I haven't succeeded yet. Perhaps someone could point me in the right direction that could trigger this kind of unit test exclusive behaviour?
Full stack trace:
java.lang.AssertionError: 1 expectation failed.
Expected status code <200> but was <500>.
at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:73)
at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:108)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:57)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:263)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:277)
at io.restassured.internal.ResponseSpecificationImpl$HamcrestAssertionClosure.validate(ResponseSpecificationImpl.groovy:512)
at io.restassured.internal.ResponseSpecificationImpl$HamcrestAssertionClosure$validate$1.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139)
at io.restassured.internal.ResponseSpecificationImpl.forceValidateResponse(ResponseSpecificationImpl.groovy:682)
at io.restassured.module.kotlin.extensions.RestAssuredKotlinExtensionsKt.Then$lambda$1(RestAssuredKotlinExtensions.kt:61)
at io.restassured.module.kotlin.extensions.RestAssuredKotlinExtensionsKt.doIfValidatableResponseImpl$lambda$2(RestAssuredKotlinExtensions.kt:80)
at io.restassured.module.kotlin.extensions.RestAssuredKotlinExtensionsKt.Then(RestAssuredKotlinExtensions.kt:60)
at nl.rug.digitallab.rag.resources.RagResourceTest.Inferring a question should succeed(RagResourceTest.kt:18)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at io.quarkus.test.junit.QuarkusTestExtension.runExtensionMethod(QuarkusTestExtension.java:999)
at io.quarkus.test.junit.QuarkusTestExtension.interceptTestMethod(QuarkusTestExtension.java:847)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Suppressed: io.quarkiverse.langchain4j.runtime.aiservice.GuardrailException: Error creating synthetic bean [Le6zQbzkojAYO_OiKIQWJf4lGa4]: io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException: Unexpected configuration error
at io.quarkiverse.langchain4j.runtime.aiservice.GuardrailsSupport.invokeInputGuardrails(GuardrailsSupport.java:55)
at io.quarkiverse.langchain4j.runtime.aiservice.AiServiceMethodImplementationSupport.doImplement(AiServiceMethodImplementationSupport.java:266)
at io.quarkiverse.langchain4j.runtime.aiservice.AiServiceMethodImplementationSupport.implement(AiServiceMethodImplementationSupport.java:154)
at io.quarkiverse.langchain4j.runtime.aiservice.MethodImplementationSupportProducer$1$1.apply(MethodImplementationSupportProducer.java:31)
at io.quarkiverse.langchain4j.runtime.aiservice.MethodImplementationSupportProducer$1$1.apply(MethodImplementationSupportProducer.java:28)
at io.quarkiverse.langchain4j.runtime.aiservice.SpanWrapper.wrap(SpanWrapper.java:32)
at io.quarkiverse.langchain4j.runtime.aiservice.MethodImplementationSupportProducer$1$2.apply(MethodImplementationSupportProducer.java:40)
at io.quarkiverse.langchain4j.runtime.aiservice.MethodImplementationSupportProducer$1$2.apply(MethodImplementationSupportProducer.java:37)
at io.quarkiverse.langchain4j.runtime.aiservice.MetricsTimedWrapper$2.get(MetricsTimedWrapper.java:42)
at io.micrometer.core.instrument.composite.CompositeTimer.record(CompositeTimer.java:69)
at io.quarkiverse.langchain4j.runtime.aiservice.MetricsTimedWrapper.wrap(MetricsTimedWrapper.java:39)
at io.quarkiverse.langchain4j.runtime.aiservice.MethodImplementationSupportProducer$1$2.apply(MethodImplementationSupportProducer.java:40)
at io.quarkiverse.langchain4j.runtime.aiservice.MethodImplementationSupportProducer$1$2.apply(MethodImplementationSupportProducer.java:37)
at io.quarkiverse.langchain4j.runtime.aiservice.MetricsCountedWrapper.wrap(MetricsCountedWrapper.java:22)
at io.quarkiverse.langchain4j.runtime.aiservice.MethodImplementationSupportProducer$1$2.apply(MethodImplementationSupportProducer.java:40)
at io.quarkiverse.langchain4j.runtime.aiservice.MethodImplementationSupportProducer$1$2.apply(MethodImplementationSupportProducer.java:37)
at io.quarkiverse.langchain4j.runtime.aiservice.MethodImplementationSupportProducer$1.implement(MethodImplementationSupportProducer.java:46)
at nl.rug.digitallab.rag.langchain.StudentAssistantAiService$$QuarkusImpl.answerQuestion(Unknown Source)
at nl.rug.digitallab.rag.langchain.StudentAssistantAiService$$QuarkusImpl_ClientProxy.answerQuestion(Unknown Source)
at nl.rug.digitallab.rag.managers.RagManager.infer(RagManager.kt:54)
at nl.rug.digitallab.rag.managers.RagManager_ClientProxy.infer(Unknown Source)
at nl.rug.digitallab.rag.resources.RagResource.infer(RagResource.kt:48)
at nl.rug.digitallab.rag.resources.RagResource$quarkusrestinvoker$infer_6641116d0c2682d92ecd97ca0b8d6e6696d93692.invoke(Unknown Source)
at org.jboss.resteasy.reactive.server.handlers.InvocationHandler.handle(InvocationHandler.java:29)
at io.quarkus.resteasy.reactive.server.runtime.QuarkusResteasyReactiveRequestContext.invokeHandler(QuarkusResteasyReactiveRequestContext.java:141)
at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:147)
at io.quarkus.vertx.core.runtime.VertxCoreRecorder$15.runWith(VertxCoreRecorder.java:637)
at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630)
at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589)
at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:11)
at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:11)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: jakarta.enterprise.inject.CreationException: Error creating synthetic bean [Le6zQbzkojAYO_OiKIQWJf4lGa4]: io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException: Unexpected configuration error
at io.opentelemetry.api.OpenTelemetry_Le6zQbzkojAYO_OiKIQWJf4lGa4_Synthetic_Bean.doCreate(Unknown Source)
at io.opentelemetry.api.OpenTelemetry_Le6zQbzkojAYO_OiKIQWJf4lGa4_Synthetic_Bean.create(Unknown Source)
at io.opentelemetry.api.OpenTelemetry_Le6zQbzkojAYO_OiKIQWJf4lGa4_Synthetic_Bean.create(Unknown Source)
at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:119)
at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:38)
at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:35)
at io.quarkus.arc.impl.LazyValue.get(LazyValue.java:32)
at io.quarkus.arc.impl.ComputingCache.computeIfAbsent(ComputingCache.java:69)
at io.quarkus.arc.impl.ComputingCacheContextInstances.computeIfAbsent(ComputingCacheContextInstances.java:19)
at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:35)
at io.opentelemetry.api.OpenTelemetry_Le6zQbzkojAYO_OiKIQWJf4lGa4_Synthetic_Bean.get(Unknown Source)
at io.opentelemetry.api.OpenTelemetry_Le6zQbzkojAYO_OiKIQWJf4lGa4_Synthetic_Bean.get(Unknown Source)
at io.quarkus.opentelemetry.runtime.tracing.cdi.WithSpanInterceptor_Bean.doCreate(Unknown Source)
at io.quarkus.opentelemetry.runtime.tracing.cdi.WithSpanInterceptor_Bean.create(Unknown Source)
at io.quarkus.opentelemetry.runtime.tracing.cdi.WithSpanInterceptor_Bean.get(Unknown Source)
at io.quarkus.opentelemetry.runtime.tracing.cdi.WithSpanInterceptor_Bean.get(Unknown Source)
at nl.rug.digitallab.rag.langchain.inference.BasicInputGuardrail_Subclass.<init>(Unknown Source)
at nl.rug.digitallab.rag.langchain.inference.BasicInputGuardrail_Bean.doCreate(Unknown Source)
at nl.rug.digitallab.rag.langchain.inference.BasicInputGuardrail_Bean.create(Unknown Source)
at nl.rug.digitallab.rag.langchain.inference.BasicInputGuardrail_Bean.create(Unknown Source)
at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:119)
at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:38)
at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:35)
at io.quarkus.arc.generator.Default_jakarta_enterprise_context_ApplicationScoped_ContextInstances.c15(Unknown Source)
at io.quarkus.arc.generator.Default_jakarta_enterprise_context_ApplicationScoped_ContextInstances.computeIfAbsent(Unknown Source)
at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:35)
at io.quarkus.arc.impl.ClientProxies.getApplicationScopedDelegate(ClientProxies.java:23)
at nl.rug.digitallab.rag.langchain.inference.BasicInputGuardrail_ClientProxy.arc$delegate(Unknown Source)
at nl.rug.digitallab.rag.langchain.inference.BasicInputGuardrail_ClientProxy.validate(Unknown Source)
at io.quarkiverse.langchain4j.runtime.aiservice.GuardrailsSupport.guardrailResult(GuardrailsSupport.java:198)
at io.quarkiverse.langchain4j.runtime.aiservice.GuardrailsSupport.invokeInputGuardRails(GuardrailsSupport.java:188)
at io.quarkiverse.langchain4j.runtime.aiservice.GuardrailsSupport.invokeInputGuardrails(GuardrailsSupport.java:50)
... 34 more
Caused by: io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException: Unexpected configuration error
at io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdkBuilder.build(AutoConfiguredOpenTelemetrySdkBuilder.java:527)
at io.quarkus.opentelemetry.runtime.OpenTelemetryRecorder$2.apply(OpenTelemetryRecorder.java:102)
at io.quarkus.opentelemetry.runtime.OpenTelemetryRecorder$2.apply(OpenTelemetryRecorder.java:88)
at io.opentelemetry.api.OpenTelemetry_Le6zQbzkojAYO_OiKIQWJf4lGa4_Synthetic_Bean.createSynthetic(Unknown Source)
... 66 more
Caused by: java.lang.IllegalStateException: GlobalOpenTelemetry.set has already been called. GlobalOpenTelemetry.set must be called only once before any calls to GlobalOpenTelemetry.get. If you are using the OpenTelemetrySdk, use OpenTelemetrySdkBuilder.buildAndRegisterGlobal instead. Previous invocation set to cause of this exception.
at io.opentelemetry.api.GlobalOpenTelemetry.set(GlobalOpenTelemetry.java:107)
at io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdkBuilder.maybeSetAsGlobal(AutoConfiguredOpenTelemetrySdkBuilder.java:594)
at io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdkBuilder.build(AutoConfiguredOpenTelemetrySdkBuilder.java:508)
... 69 more
Caused by: java.lang.Throwable
at io.opentelemetry.api.GlobalOpenTelemetry.set(GlobalOpenTelemetry.java:115)
at io.opentelemetry.api.GlobalOpenTelemetry.get(GlobalOpenTelemetry.java:85)
at io.opentelemetry.api.GlobalOpenTelemetry.getTracer(GlobalOpenTelemetry.java:134)
at io.quarkus.opentelemetry.runtime.tracing.cdi.TracerProducer.getTracer(TracerProducer.java:33)
at io.quarkus.opentelemetry.runtime.tracing.cdi.TracerProducer_ProducerMethod_getTracer_2WbgLITcyJ8m3eLEKU0XTuO1Xs4_Bean.doCreate(Unknown Source)
at io.quarkus.opentelemetry.runtime.tracing.cdi.TracerProducer_ProducerMethod_getTracer_2WbgLITcyJ8m3eLEKU0XTuO1Xs4_Bean.create(Unknown Source)
at io.quarkus.opentelemetry.runtime.tracing.cdi.TracerProducer_ProducerMethod_getTracer_2WbgLITcyJ8m3eLEKU0XTuO1Xs4_Bean.create(Unknown Source)
at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:119)
at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:38)
at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:35)
at io.quarkus.arc.generator.Default_jakarta_enterprise_context_ApplicationScoped_ContextInstances.c27(Unknown Source)
at io.quarkus.arc.generator.Default_jakarta_enterprise_context_ApplicationScoped_ContextInstances.computeIfAbsent(Unknown Source)
at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:35)
at io.quarkus.arc.impl.ClientProxies.getApplicationScopedDelegate(ClientProxies.java:23)
at io.opentelemetry.api.trace.TracerProducer_ProducerMethod_getTracer_2WbgLITcyJ8m3eLEKU0XTuO1Xs4_ClientProxy.arc$delegate(Unknown Source)
at io.opentelemetry.api.trace.TracerProducer_ProducerMethod_getTracer_2WbgLITcyJ8m3eLEKU0XTuO1Xs4_ClientProxy.spanBuilder(Unknown Source)
at io.quarkiverse.langchain4j.runtime.aiservice.SpanWrapper.wrap(SpanWrapper.java:30)
... 29 more
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working