Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ArC - remove unused interceptors #18970

Merged
merged 1 commit into from
Aug 20, 2021

Conversation

mkouba
Copy link
Contributor

@mkouba mkouba commented Jul 23, 2021

  • and beans injected only by these interceptors
  • and beans that are only injected in removed beans

@quarkus-bot quarkus-bot bot added the area/arc Issue related to ARC (dependency injection) label Jul 23, 2021
@mkouba
Copy link
Contributor Author

mkouba commented Jul 23, 2021

Things to add:

  • test for "beans that are only injected in removed beans"
  • remove unused decorators

@Sanne
Copy link
Member

Sanne commented Jul 23, 2021

  • and beans injected only by these interceptors
  • and beans that are only injected in removed beans

Awesome!

@mkouba mkouba force-pushed the arc-remove-unused-interceptors branch from 42a7462 to 431b064 Compare July 25, 2021 18:27
@mkouba mkouba marked this pull request as ready for review July 25, 2021 18:27
@quarkus-bot
Copy link

quarkus-bot bot commented Jul 25, 2021

This workflow status is outdated as a new workflow run has been triggered.

Failing Jobs - Building 431b064

Status Name Step Test failures Logs Raw logs
JVM Tests - JDK 11 Build Test failures Logs Raw logs
JVM Tests - JDK 11 Windows Build Test failures Logs Raw logs
JVM Tests - JDK 16 Build Test failures Logs Raw logs
Native Tests - Cache Build Test failures Logs Raw logs
Native Tests - Data4 Build Test failures Logs Raw logs
Native Tests - HTTP Build ⚠️ Check → Logs Raw logs
Native Tests - Misc3 Build ⚠️ Check → Logs Raw logs

Full information is available in the Build summary check run.

Test Failures

⚙️ JVM Tests - JDK 11 #

📦 extensions/mailer/deployment

io.quarkus.mailer.MailTemplateValidationTest. - More details - Source on GitHub

org.opentest4j.AssertionFailedError: The build was expected to fail
	at org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java:39)
	at org.junit.jupiter.api.Assertions.fail(Assertions.java:117)
	at io.quarkus.test.QuarkusUnitTest.beforeAll(QuarkusUnitTest.java:510)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeBeforeAllCallbacks$8(ClassBasedTestDescriptor.java:368)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeBeforeAllCallbacks(ClassBasedTestDescriptor.java:368)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:192)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:78)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:136)
	at org.junit.platform.engine.s...

io.quarkus.mailer.i18n.MailMessageBundleTest.testSend line 42 - More details - Source on GitHub

java.lang.NullPointerException
	at io.quarkus.mailer.runtime.MailTemplateInstanceImpl$2.apply(MailTemplateInstanceImpl.java:136)
	at io.quarkus.mailer.runtime.MailTemplateInstanceImpl$2.apply(MailTemplateInstanceImpl.java:133)
	at io.smallrye.context.impl.wrappers.SlowContextualFunction.apply(SlowContextualFunction.java:21)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni$UniOnItemTransformToUniProcessor.performInnerSubscription(UniOnItemTransformToUni.java:68)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni$UniOnItemTransformToUniProcessor.onItem(UniOnItemTransformToUni.java:57)
	at io.smallrye.mutiny.operators.uni.UniAndCombination$AndSupervisor.computeAndFireTheOutcome(UniAndCombination.java:128)
	at io.smallrye.mutiny.operators.uni.UniAndCombination$AndSupervisor.check(UniAndCombination.java:113)
	at io.smallrye.mutiny.operators.uni.UniAndCombination$UniHandler.onItem(UniAndCombination.java:190)
	at io.smallrye.mutiny.operators.uni.builders.UniCreateFrom...

📦 extensions/smallrye-fault-tolerance/deployment

io.quarkus.smallrye.faulttolerance.test.ObjectBeanTest. - More details - Source on GitHub

java.lang.RuntimeException: 
java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
	[error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: java.lang.NullPointerException
	at io.quarkus.arc.processor.UnusedBeans.lambda$findRemovableBeans$0(UnusedBeans.java:22)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176)
	at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1603)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
	at io.quarkus.arc.processor.UnusedBeans.findRemo...

⚙️ JVM Tests - JDK 11 Windows #

📦 extensions/mailer/deployment

io.quarkus.mailer.MailTemplateValidationTest. - More details - Source on GitHub

org.opentest4j.AssertionFailedError: The build was expected to fail
	at org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java:39)
	at org.junit.jupiter.api.Assertions.fail(Assertions.java:117)
	at io.quarkus.test.QuarkusUnitTest.beforeAll(QuarkusUnitTest.java:510)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeBeforeAllCallbacks$8(ClassBasedTestDescriptor.java:368)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeBeforeAllCallbacks(ClassBasedTestDescriptor.java:368)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:192)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:78)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:136)
	at org.junit.platform.engine.s...

io.quarkus.mailer.i18n.MailMessageBundleTest.testSend line 42 - More details - Source on GitHub

java.lang.NullPointerException
	at io.quarkus.mailer.runtime.MailTemplateInstanceImpl$2.apply(MailTemplateInstanceImpl.java:136)
	at io.quarkus.mailer.runtime.MailTemplateInstanceImpl$2.apply(MailTemplateInstanceImpl.java:133)
	at io.smallrye.context.impl.wrappers.SlowContextualFunction.apply(SlowContextualFunction.java:21)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni$UniOnItemTransformToUniProcessor.performInnerSubscription(UniOnItemTransformToUni.java:68)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni$UniOnItemTransformToUniProcessor.onItem(UniOnItemTransformToUni.java:57)
	at io.smallrye.mutiny.operators.uni.UniAndCombination$AndSupervisor.computeAndFireTheOutcome(UniAndCombination.java:128)
	at io.smallrye.mutiny.operators.uni.UniAndCombination$AndSupervisor.check(UniAndCombination.java:113)
	at io.smallrye.mutiny.operators.uni.UniAndCombination$UniHandler.onItem(UniAndCombination.java:190)
	at io.smallrye.mutiny.operators.uni.builders.UniCreateFrom...

📦 extensions/smallrye-fault-tolerance/deployment

io.quarkus.smallrye.faulttolerance.test.ObjectBeanTest. - More details - Source on GitHub

java.lang.RuntimeException: 
java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
	[error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: java.lang.NullPointerException
	at io.quarkus.arc.processor.UnusedBeans.lambda$findRemovableBeans$0(UnusedBeans.java:22)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176)
	at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1603)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
	at io.quarkus.arc.processor.UnusedBeans.findRemo...

⚙️ JVM Tests - JDK 16 #

📦 extensions/mailer/deployment

io.quarkus.mailer.MailTemplateValidationTest. - More details - Source on GitHub

org.opentest4j.AssertionFailedError: The build was expected to fail
	at org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java:39)
	at org.junit.jupiter.api.Assertions.fail(Assertions.java:117)
	at io.quarkus.test.QuarkusUnitTest.beforeAll(QuarkusUnitTest.java:510)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeBeforeAllCallbacks$8(ClassBasedTestDescriptor.java:368)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeBeforeAllCallbacks(ClassBasedTestDescriptor.java:368)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:192)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:78)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:136)
	at org.junit.platform.engine.s...

io.quarkus.mailer.i18n.MailMessageBundleTest.testSend line 42 - More details - Source on GitHub

java.lang.NullPointerException: Cannot invoke "io.quarkus.mailer.runtime.MutinyMailerImpl.send(io.quarkus.mailer.Mail[])" because "this.this$0.mailer" is null
	at io.quarkus.mailer.runtime.MailTemplateInstanceImpl$2.apply(MailTemplateInstanceImpl.java:136)
	at io.quarkus.mailer.runtime.MailTemplateInstanceImpl$2.apply(MailTemplateInstanceImpl.java:133)
	at io.smallrye.context.impl.wrappers.SlowContextualFunction.apply(SlowContextualFunction.java:21)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni$UniOnItemTransformToUniProcessor.performInnerSubscription(UniOnItemTransformToUni.java:68)
	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni$UniOnItemTransformToUniProcessor.onItem(UniOnItemTransformToUni.java:57)
	at io.smallrye.mutiny.operators.uni.UniAndCombination$AndSupervisor.computeAndFireTheOutcome(UniAndCombination.java:128)
	at io.smallrye.mutiny.operators.uni.UniAndCombination$AndSupervisor.check(UniAndCombination.java:113)
	at io.smallrye.mutiny.operators...

📦 extensions/smallrye-fault-tolerance/deployment

io.quarkus.smallrye.faulttolerance.test.ObjectBeanTest. - More details - Source on GitHub

java.lang.RuntimeException: 
java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
	[error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: java.lang.NullPointerException: Cannot invoke "io.quarkus.arc.processor.BeanInfo.isProducerMethod()" because "b" is null
	at io.quarkus.arc.processor.UnusedBeans.lambda$findRemovableBeans$0(UnusedBeans.java:22)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:178)
	at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1694)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipe...

⚙️ Native Tests - Cache #

📦 integration-tests/cache

io.quarkus.it.cache.RestClientITCase.test - More details - Source on GitHub

java.lang.AssertionError: 
1 expectation failed.
Response body doesn't match expectation.
Expected: "2"
  Actual: 1

	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:72)
	at org.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:59)
	at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrap.callConstructor(ConstructorSite.java:84)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.c...

⚙️ Native Tests - Data4 #

📦 integration-tests/mongodb-panache-kotlin

io.quarkus.it.mongodb.panache.reactive.ReactiveMongodbPanacheResourceTest.testReactiveBookEntity line 46 - More details - Source on GitHub

com.fasterxml.jackson.databind.exc.MismatchedInputException: 
No content to map due to end-of-input
 at [Source: (String)""; line: 1, column: 0]
	at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
	at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4688)
	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4586)
	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3548)
	at com.fasterxml.jackson.databind.ObjectMapper$readValue$0.call(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:148)
	at io.restassured.internal.path.json.mapping.JsonPathJackson2ObjectDeserializer.deserialize(JsonPathJackson2ObjectDeserializer.groovy:46)
...

io.quarkus.it.mongodb.panache.reactive.ReactiveMongodbPanacheResourceTest.testReactivePersonEntity line 57 - More details - Source on GitHub

com.fasterxml.jackson.databind.exc.MismatchedInputException: 
No content to map due to end-of-input
 at [Source: (String)""; line: 1, column: 0]
	at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
	at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4688)
	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4586)
	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3548)
	at com.fasterxml.jackson.databind.ObjectMapper$readValue$0.call(Unknown Source)
	at io.restassured.internal.path.json.mapping.JsonPathJackson2ObjectDeserializer.deserialize(JsonPathJackson2ObjectDeserializer.groovy:46)
	at io.restassured.path.json.mapping.JsonPathObjectDeserializer$deserialize.call(Unknown Source)
	at io.restassured.internal.mapping.Jackson2Mapper.deserialize(Jackson2Mapper.groovy:58)
	at io.restassured.mapper.ObjectMapper$deserialize.call(Unknown Source)
	at io.resta...

io.quarkus.it.mongodb.panache.reactive.ReactiveMongodbPanacheResourceTest.testReactiveBookRepository line 52 - More details - Source on GitHub

com.fasterxml.jackson.databind.exc.MismatchedInputException: 
No content to map due to end-of-input
 at [Source: (String)""; line: 1, column: 0]
	at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
	at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4688)
	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4586)
	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3548)
	at com.fasterxml.jackson.databind.ObjectMapper$readValue$0.call(Unknown Source)
	at io.restassured.internal.path.json.mapping.JsonPathJackson2ObjectDeserializer.deserialize(JsonPathJackson2ObjectDeserializer.groovy:46)
	at io.restassured.path.json.mapping.JsonPathObjectDeserializer$deserialize.call(Unknown Source)
	at io.restassured.internal.mapping.Jackson2Mapper.deserialize(Jackson2Mapper.groovy:58)
	at io.restassured.mapper.ObjectMapper$deserialize.call(Unknown Source)
	at io.resta...

io.quarkus.it.mongodb.panache.reactive.ReactiveMongodbPanacheResourceTest.testReactivePersonRepository line 62 - More details - Source on GitHub

com.fasterxml.jackson.databind.exc.MismatchedInputException: 
No content to map due to end-of-input
 at [Source: (String)""; line: 1, column: 0]
	at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
	at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4688)
	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4586)
	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3548)
	at com.fasterxml.jackson.databind.ObjectMapper$readValue$0.call(Unknown Source)
	at io.restassured.internal.path.json.mapping.JsonPathJackson2ObjectDeserializer.deserialize(JsonPathJackson2ObjectDeserializer.groovy:46)
	at io.restassured.path.json.mapping.JsonPathObjectDeserializer$deserialize.call(Unknown Source)
	at io.restassured.internal.mapping.Jackson2Mapper.deserialize(Jackson2Mapper.groovy:58)
	at io.restassured.mapper.ObjectMapper$deserialize.call(Unknown Source)
	at io.resta...

io.quarkus.it.mongodb.panache.reactive.ReactiveMongodbPanacheResourceTest.testMoreEntityFunctionalities line 344 - More details - Source on GitHub

java.lang.AssertionError: 
1 expectation failed.
Expected status code <200> but was <500>.

	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:72)
	at org.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:59)
	at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrap.callConstructor(ConstructorSite.java:84)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCa...

io.quarkus.it.mongodb.panache.reactive.ReactiveMongodbPanacheResourceTest.testMoreRepositoryFunctionalities line 349 - More details - Source on GitHub

java.lang.AssertionError: 
1 expectation failed.
Expected status code <200> but was <500>.

	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:72)
	at org.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:59)
	at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrap.callConstructor(ConstructorSite.java:84)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:277)
	at io.restassured.internal.ResponseSpecificationImpl$HamcrestAssertionClosure.valid...

@Sanne
Copy link
Member

Sanne commented Jul 26, 2021

Looks good to me, but my knowledge of ArC is very superficial.

Regarding the algorithm: I guess it's a best effort, to be really sure to remove it all it should run in multiple phases until it neither any bean nor any interceptor is removed, no?

Also wondering: would you want to merge this now, or rather wait for 2.3+ ?

@Ladicek
Copy link
Contributor

Ladicek commented Jul 26, 2021

Looks fine on the first sight, though I'd have to check it out locally and walk around the code for a few hours to be confident :-)

@Sanne I think this method

private void removeUnusedBeans(Collection<BeanInfo> beansSubset, Set<BeanInfo> declaresObserver,
List<Predicate<BeanInfo>> allUnusedExclusions) {
Collection<BeanInfo> beansToScan;
if (beansSubset != null) {
beansToScan = beansSubset;
} else {
beansToScan = this.beans;
}
if (beansToScan.isEmpty()) {
return;
}
Set<BeanInfo> removableBeans = UnusedBeans.findRemovableBeans(beansToScan, this.injectionPoints, declaresObserver,
allUnusedExclusions);
while (!removableBeans.isEmpty()) {
this.beans.removeAll(removableBeans);
if (beansSubset != null) {
beansSubset.removeAll(removableBeans);
}
removedBeans.addAll(removableBeans);
// We need to remove all injection points of the removed beans
final Set<BeanInfo> removed = new HashSet<>(removableBeans);
injectionPoints.removeIf(ip -> {
for (BeanInfo b : removed) {
if (b.getAllInjectionPoints().contains(ip)) {
return true;
}
}
return false;
});
if (LOGGER.isDebugEnabled()) {
LOGGER.debugf(removedBeans.stream().map(b -> "Removed unused " + b).collect(Collectors.joining("\n")));
}
removableBeans = UnusedBeans.findRemovableBeans(beansToScan, this.injectionPoints, declaresObserver,
allUnusedExclusions);
}
}
does a fixed point iteration, which seems to be what you're asking for?

@Ladicek
Copy link
Contributor

Ladicek commented Jul 26, 2021

Ah I probably got it wrong. Indeed currently removing unused interceptors/decorators is only a single pass, which is followed by removing unused beans (which is iterated). I don't really know if it's possible for unused beans to declare interceptors that would become unused after the unused beans are removed, but I guess it might.

@Sanne
Copy link
Member

Sanne commented Jul 26, 2021

Right, I think (if we wanted to really cover it all) something similar would need to be done while taking into account both beans and interceptors.

But I'm not sure if it's worth it - both in terms of complexity/maintenance and in terms of complexity/execution times. Was just bringing it up as I'm curious if it was a conscious choice.

@Ladicek
Copy link
Contributor

Ladicek commented Jul 26, 2021

OK, even better. So we remove unused beans at the beginning, then remove unused interceptors/decorators (that's single pass), then we remove unused beans again. I think it should be something like this instead (pseudocode):

boolean shouldContinue = true;
while (shouldContinue) {
    boolean someBeansRemoved = removeUnusedBeans(...);
    boolean someInterceptorsRemoved = removeUnusedInterceptors(...);
    boolean someDecoratorsRemoved = removeUnusedDecorators(...);

    shouldContinue = someBeansRemoved || someInterceptorsRemoved || someDecoratorsRemoved;
}

Copy link
Member

@Sanne Sanne left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll approve so that @mkouba can merge if he wants to 👍

I'd be keen to measure it but my pet projects don't really use interceptors so I won't do this yet. I might do another pass to measure additional memory costs in ArcContainerImpl, but I do those in batches later.

@Sanne
Copy link
Member

Sanne commented Jul 26, 2021

@Ladicek yes exactly that! Maybe you want to continue this after it's merged? up to @mkouba ;)

@mkouba
Copy link
Contributor Author

mkouba commented Jul 26, 2021

I don't really know if it's possible for unused beans to declare interceptors that would become unused after the unused beans are removed, but I guess it might.

Yes, I think that in theory it's possible. For example if you have a bean Foo which is only injected in an interceptor Alpha and it has an associated interceptor Bravo then currently we would only remove the unused interceptor Alpha and the unused bean Foo, but not the Bravo interceptor.

Also wondering: would you want to merge this now, or rather wait for 2.3+ ?

That's a good question. It should probably target 2.3 because we may expect problems with programmatic lookup in extensions that do rely on less strict implementation (although the rules stay the same ;-).

Regarding the algorithm: I guess it's a best effort, to be really sure to remove it all..

Yes, it's a best effort. But we should probably try to cover maximum use cases...

CC @Sanne @Ladicek

@Ladicek
Copy link
Contributor

Ladicek commented Jul 26, 2021

Moving the fixed point iteration up one level shouldn't be hard, from my superficial understanding of the code. If @mkouba doesn't get to it, I may try later :-)

@mkouba
Copy link
Contributor Author

mkouba commented Jul 26, 2021

I'm on it but I'll ping you for review ;-)

@quarkus-bot
Copy link

quarkus-bot bot commented Jul 26, 2021

This workflow status is outdated as a new workflow run has been triggered.

Failing Jobs - Building 16fcd22

Status Name Step Test failures Logs Raw logs
JVM Tests - JDK 11 Build Test failures Logs Raw logs
JVM Tests - JDK 11 Windows Build Test failures Logs Raw logs
JVM Tests - JDK 16 Build Test failures Logs Raw logs
Native Tests - Cache Build Test failures Logs Raw logs
Native Tests - Data4 Build Test failures Logs Raw logs

Full information is available in the Build summary check run.

Test Failures

⚙️ JVM Tests - JDK 11 #

📦 extensions/resteasy-classic/rest-client/deployment

io.quarkus.restclient.ft.AsyncRestClientFallbackTest.testFallbackWasUsed line 41 - More details - Source on GitHub

java.util.concurrent.ExecutionException: javax.ws.rs.WebApplicationException: Unknown error, status code 404
	at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:395)
	at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1999)
	at io.quarkus.restclient.ft.AsyncRestClientFallbackTest.testFallbackWasUsed(AsyncRestClientFallbackTest.java:41)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at io.quarkus.test.QuarkusUnitTest.runExtensionMethod(QuarkusUnitTest.java:363)
	at io.quarkus.test.QuarkusUnitTest.interceptTestMethod(QuarkusUnitTest.java:331)
	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptor...

io.quarkus.restclient.ft.RestClientFallbackTest.testFallbackWasUsed line 37 - More details - Source on GitHub

javax.ws.rs.WebApplicationException: Unknown error, status code 404
	at org.jboss.resteasy.microprofile.client.DefaultResponseExceptionMapper.toThrowable(DefaultResponseExceptionMapper.java:21)
	at org.jboss.resteasy.microprofile.client.ExceptionMapping$HandlerException.mapException(ExceptionMapping.java:41)
	at org.jboss.resteasy.microprofile.client.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:153)
	at com.sun.proxy.$Proxy57.ping(Unknown Source)
	at io.quarkus.restclient.ft.RestClientFallbackTest.testFallbackWasUsed(RestClientFallbackTest.java:37)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at io.quarkus.test.QuarkusUnitTest.runExtensionMethod(QuarkusUnitTest.ja...

⚙️ JVM Tests - JDK 11 Windows #

📦 extensions/resteasy-classic/rest-client/deployment

io.quarkus.restclient.ft.AsyncRestClientFallbackTest.testFallbackWasUsed line 41 - More details - Source on GitHub

java.util.concurrent.ExecutionException: javax.ws.rs.WebApplicationException: Unknown error, status code 404
	at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:395)
	at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1999)
	at io.quarkus.restclient.ft.AsyncRestClientFallbackTest.testFallbackWasUsed(AsyncRestClientFallbackTest.java:41)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at io.quarkus.test.QuarkusUnitTest.runExtensionMethod(QuarkusUnitTest.java:363)
	at io.quarkus.test.QuarkusUnitTest.interceptTestMethod(QuarkusUnitTest.java:331)
	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptor...

io.quarkus.restclient.ft.RestClientFallbackTest.testFallbackWasUsed line 37 - More details - Source on GitHub

javax.ws.rs.WebApplicationException: Unknown error, status code 404
	at org.jboss.resteasy.microprofile.client.DefaultResponseExceptionMapper.toThrowable(DefaultResponseExceptionMapper.java:21)
	at org.jboss.resteasy.microprofile.client.ExceptionMapping$HandlerException.mapException(ExceptionMapping.java:41)
	at org.jboss.resteasy.microprofile.client.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:153)
	at com.sun.proxy.$Proxy127.ping(Unknown Source)
	at io.quarkus.restclient.ft.RestClientFallbackTest.testFallbackWasUsed(RestClientFallbackTest.java:37)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at io.quarkus.test.QuarkusUnitTest.runExtensionMethod(QuarkusUnitTest.j...

⚙️ JVM Tests - JDK 16 #

📦 extensions/resteasy-classic/rest-client/deployment

io.quarkus.restclient.ft.AsyncRestClientFallbackTest.testFallbackWasUsed line 41 - More details - Source on GitHub

java.util.concurrent.ExecutionException: javax.ws.rs.WebApplicationException: Unknown error, status code 404
	at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:395)
	at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2069)
	at io.quarkus.restclient.ft.AsyncRestClientFallbackTest.testFallbackWasUsed(AsyncRestClientFallbackTest.java:41)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at io.quarkus.test.QuarkusUnitTest.runExtensionMethod(QuarkusUnitTest.java:363)
	at io.quarkus.test.QuarkusUnitTest.interceptTestMethod(QuarkusUnitTest.java:331)
	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptor...

io.quarkus.restclient.ft.RestClientFallbackTest.testFallbackWasUsed line 37 - More details - Source on GitHub

javax.ws.rs.WebApplicationException: Unknown error, status code 404
	at org.jboss.resteasy.microprofile.client.DefaultResponseExceptionMapper.toThrowable(DefaultResponseExceptionMapper.java:21)
	at org.jboss.resteasy.microprofile.client.ExceptionMapping$HandlerException.mapException(ExceptionMapping.java:41)
	at org.jboss.resteasy.microprofile.client.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:153)
	at jdk.proxy5/jdk.proxy5.$Proxy58.ping(Unknown Source)
	at io.quarkus.restclient.ft.RestClientFallbackTest.testFallbackWasUsed(RestClientFallbackTest.java:37)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at io.quarkus.test.QuarkusUnitTest.runExtensionMethod(QuarkusUni...

⚙️ Native Tests - Cache #

📦 integration-tests/cache

io.quarkus.it.cache.RestClientITCase.test - More details - Source on GitHub

java.lang.AssertionError: 
1 expectation failed.
Response body doesn't match expectation.
Expected: "2"
  Actual: 1

	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:72)
	at org.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:59)
	at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrap.callConstructor(ConstructorSite.java:84)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.c...

⚙️ Native Tests - Data4 #

📦 integration-tests/mongodb-panache-kotlin

io.quarkus.it.mongodb.panache.reactive.ReactiveMongodbPanacheResourceTest.testReactiveBookEntity line 46 - More details - Source on GitHub

com.fasterxml.jackson.databind.exc.MismatchedInputException: 
No content to map due to end-of-input
 at [Source: (String)""; line: 1, column: 0]
	at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
	at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4688)
	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4586)
	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3548)
	at com.fasterxml.jackson.databind.ObjectMapper$readValue$0.call(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:148)
	at io.restassured.internal.path.json.mapping.JsonPathJackson2ObjectDeserializer.deserialize(JsonPathJackson2ObjectDeserializer.groovy:46)
...

io.quarkus.it.mongodb.panache.reactive.ReactiveMongodbPanacheResourceTest.testReactivePersonEntity line 57 - More details - Source on GitHub

com.fasterxml.jackson.databind.exc.MismatchedInputException: 
No content to map due to end-of-input
 at [Source: (String)""; line: 1, column: 0]
	at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
	at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4688)
	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4586)
	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3548)
	at com.fasterxml.jackson.databind.ObjectMapper$readValue$0.call(Unknown Source)
	at io.restassured.internal.path.json.mapping.JsonPathJackson2ObjectDeserializer.deserialize(JsonPathJackson2ObjectDeserializer.groovy:46)
	at io.restassured.path.json.mapping.JsonPathObjectDeserializer$deserialize.call(Unknown Source)
	at io.restassured.internal.mapping.Jackson2Mapper.deserialize(Jackson2Mapper.groovy:58)
	at io.restassured.mapper.ObjectMapper$deserialize.call(Unknown Source)
	at io.resta...

io.quarkus.it.mongodb.panache.reactive.ReactiveMongodbPanacheResourceTest.testReactiveBookRepository line 52 - More details - Source on GitHub

com.fasterxml.jackson.databind.exc.MismatchedInputException: 
No content to map due to end-of-input
 at [Source: (String)""; line: 1, column: 0]
	at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
	at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4688)
	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4586)
	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3548)
	at com.fasterxml.jackson.databind.ObjectMapper$readValue$0.call(Unknown Source)
	at io.restassured.internal.path.json.mapping.JsonPathJackson2ObjectDeserializer.deserialize(JsonPathJackson2ObjectDeserializer.groovy:46)
	at io.restassured.path.json.mapping.JsonPathObjectDeserializer$deserialize.call(Unknown Source)
	at io.restassured.internal.mapping.Jackson2Mapper.deserialize(Jackson2Mapper.groovy:58)
	at io.restassured.mapper.ObjectMapper$deserialize.call(Unknown Source)
	at io.resta...

io.quarkus.it.mongodb.panache.reactive.ReactiveMongodbPanacheResourceTest.testReactivePersonRepository line 62 - More details - Source on GitHub

com.fasterxml.jackson.databind.exc.MismatchedInputException: 
No content to map due to end-of-input
 at [Source: (String)""; line: 1, column: 0]
	at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
	at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4688)
	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4586)
	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3548)
	at com.fasterxml.jackson.databind.ObjectMapper$readValue$0.call(Unknown Source)
	at io.restassured.internal.path.json.mapping.JsonPathJackson2ObjectDeserializer.deserialize(JsonPathJackson2ObjectDeserializer.groovy:46)
	at io.restassured.path.json.mapping.JsonPathObjectDeserializer$deserialize.call(Unknown Source)
	at io.restassured.internal.mapping.Jackson2Mapper.deserialize(Jackson2Mapper.groovy:58)
	at io.restassured.mapper.ObjectMapper$deserialize.call(Unknown Source)
	at io.resta...

io.quarkus.it.mongodb.panache.reactive.ReactiveMongodbPanacheResourceTest.testMoreEntityFunctionalities line 344 - More details - Source on GitHub

java.lang.AssertionError: 
1 expectation failed.
Expected status code <200> but was <500>.

	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:72)
	at org.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:59)
	at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrap.callConstructor(ConstructorSite.java:84)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCa...

io.quarkus.it.mongodb.panache.reactive.ReactiveMongodbPanacheResourceTest.testMoreRepositoryFunctionalities line 349 - More details - Source on GitHub

java.lang.AssertionError: 
1 expectation failed.
Expected status code <200> but was <500>.

	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:72)
	at org.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:59)
	at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrap.callConstructor(ConstructorSite.java:84)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:277)
	at io.restassured.internal.ResponseSpecificationImpl$HamcrestAssertionClosure.valid...

@mkouba mkouba force-pushed the arc-remove-unused-interceptors branch from 16fcd22 to d210858 Compare July 26, 2021 12:48
@mkouba mkouba requested a review from Ladicek July 26, 2021 13:06
Copy link
Contributor

@Ladicek Ladicek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. My understanding of ArC internals is very shallow, so this is mostly a general approval, not rubber stamping of all the specific details :-)

@mkouba
Copy link
Contributor Author

mkouba commented Jul 26, 2021

LGTM. My understanding of ArC internals is very shallow, so this is mostly a general approval, not rubber stamping of all the specific details :-)

Don't be afraid I will not blame you if we find a critical bug in the relevant part of the code... or will I? ;-)

@quarkus-bot
Copy link

quarkus-bot bot commented Jul 27, 2021

This workflow status is outdated as a new workflow run has been triggered.

Failing Jobs - Building 2de5b0c

Status Name Step Test failures Logs Raw logs
JVM Tests - JDK 11 Build Test failures Logs Raw logs
JVM Tests - JDK 11 Windows Build Test failures Logs Raw logs
JVM Tests - JDK 16 Build Test failures Logs Raw logs
Native Tests - Misc3 Build ⚠️ Check → Logs Raw logs

Full information is available in the Build summary check run.

Test Failures

⚙️ JVM Tests - JDK 11 #

📦 integration-tests/smallrye-config

io.quarkus.it.smallrye.config.ConfigLocationsTest.applicationYamlProfile - More details - Source on GitHub

java.lang.RuntimeException: java.lang.ExceptionInInitializerError
	at io.quarkus.test.junit.QuarkusTestExtension.throwBootFailureException(QuarkusTestExtension.java:712)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestClassConstructor(QuarkusTestExtension.java:785)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.api.extension.InvocationInterceptor.interceptTestClassConstructor(InvocationInterceptor.java:72)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter....

io.quarkus.it.smallrye.config.ConfigurableSourceTest.configurableSource - More details - Source on GitHub

java.lang.RuntimeException: java.lang.ExceptionInInitializerError
	at io.quarkus.test.junit.QuarkusTestExtension.throwBootFailureException(QuarkusTestExtension.java:712)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestClassConstructor(QuarkusTestExtension.java:785)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.api.extension.InvocationInterceptor.interceptTestClassConstructor(InvocationInterceptor.java:72)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter....

io.quarkus.it.smallrye.config.FallbackLocationsTest.fallback - More details - Source on GitHub

java.lang.RuntimeException: java.lang.ExceptionInInitializerError
	at io.quarkus.test.junit.QuarkusTestExtension.throwBootFailureException(QuarkusTestExtension.java:712)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestClassConstructor(QuarkusTestExtension.java:785)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.api.extension.InvocationInterceptor.interceptTestClassConstructor(InvocationInterceptor.java:72)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter....

io.quarkus.it.smallrye.config.QuarkusTestProfileTest.testProfile - More details - Source on GitHub

java.lang.RuntimeException: java.lang.ExceptionInInitializerError
	at io.quarkus.test.junit.QuarkusTestExtension.throwBootFailureException(QuarkusTestExtension.java:712)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestClassConstructor(QuarkusTestExtension.java:785)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.api.extension.InvocationInterceptor.interceptTestClassConstructor(InvocationInterceptor.java:72)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter....

📦 integration-tests/smallrye-opentracing

io.quarkus.it.rest.client.ZipkinIntegrationTest.testZipkinIntegration - More details - Source on GitHub

java.lang.RuntimeException: java.lang.ExceptionInInitializerError
	at io.quarkus.test.junit.QuarkusTestExtension.throwBootFailureException(QuarkusTestExtension.java:712)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestClassConstructor(QuarkusTestExtension.java:785)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.api.extension.InvocationInterceptor.interceptTestClassConstructor(InvocationInterceptor.java:72)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter....

⚙️ JVM Tests - JDK 11 Windows #

📦 integration-tests/smallrye-config

io.quarkus.it.smallrye.config.AppConfigMockTest.mockAppConfig - More details - Source on GitHub

java.lang.RuntimeException: java.lang.ExceptionInInitializerError
	at io.quarkus.test.junit.QuarkusTestExtension.throwBootFailureException(QuarkusTestExtension.java:712)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestClassConstructor(QuarkusTestExtension.java:785)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.api.extension.InvocationInterceptor.interceptTestClassConstructor(InvocationInterceptor.java:72)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter....

io.quarkus.it.smallrye.config.FallbackLocationsTest.fallback - More details - Source on GitHub

java.lang.RuntimeException: java.lang.ExceptionInInitializerError
	at io.quarkus.test.junit.QuarkusTestExtension.throwBootFailureException(QuarkusTestExtension.java:712)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestClassConstructor(QuarkusTestExtension.java:785)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.api.extension.InvocationInterceptor.interceptTestClassConstructor(InvocationInterceptor.java:72)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter....

io.quarkus.it.smallrye.config.HibernatePropertiesTest.properties - More details - Source on GitHub

java.lang.RuntimeException: java.lang.ExceptionInInitializerError
	at io.quarkus.test.junit.QuarkusTestExtension.throwBootFailureException(QuarkusTestExtension.java:712)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestClassConstructor(QuarkusTestExtension.java:785)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.api.extension.InvocationInterceptor.interceptTestClassConstructor(InvocationInterceptor.java:72)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter....

io.quarkus.it.smallrye.config.QuarkusTestProfileTest.testProfile - More details - Source on GitHub

java.lang.RuntimeException: java.lang.ExceptionInInitializerError
	at io.quarkus.test.junit.QuarkusTestExtension.throwBootFailureException(QuarkusTestExtension.java:712)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestClassConstructor(QuarkusTestExtension.java:785)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.api.extension.InvocationInterceptor.interceptTestClassConstructor(InvocationInterceptor.java:72)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter....

io.quarkus.it.smallrye.config.ServerResourceTest. - More details - Source on GitHub

java.lang.RuntimeException: java.lang.ExceptionInInitializerError
	at io.quarkus.test.junit.QuarkusTestExtension.throwBootFailureException(QuarkusTestExtension.java:712)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptBeforeAllMethod(QuarkusTestExtension.java:769)
	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:126)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeAllMethod(TimeoutExtension.java:68)
	at org.junit.jupiter.engine.execution.Executable...

📦 integration-tests/smallrye-opentracing

io.quarkus.it.rest.client.ZipkinIntegrationTest.testZipkinIntegration - More details - Source on GitHub

java.lang.RuntimeException: java.lang.ExceptionInInitializerError
	at io.quarkus.test.junit.QuarkusTestExtension.throwBootFailureException(QuarkusTestExtension.java:712)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestClassConstructor(QuarkusTestExtension.java:785)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.api.extension.InvocationInterceptor.interceptTestClassConstructor(InvocationInterceptor.java:72)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter....

⚙️ JVM Tests - JDK 16 #

📦 extensions/resteasy-reactive/rest-client-reactive/deployment

io.quarkus.rest.client.reactive.timeout.ReadTimeoutTest.shouldNotTimeoutOnFastResponse line 47 - More details - Source on GitHub

javax.ws.rs.ProcessingException: java.util.concurrent.TimeoutException
	at org.jboss.resteasy.reactive.client.impl.InvocationBuilderImpl.unwrap(InvocationBuilderImpl.java:202)
	at org.jboss.resteasy.reactive.client.impl.InvocationBuilderImpl.method(InvocationBuilderImpl.java:311)
	at io.quarkus.rest.client.reactive.timeout.Client$$QuarkusRestClientInterface.fast(Client$$QuarkusRestClientInterface.zig:270)
	at io.quarkus.rest.client.reactive.timeout.ReadTimeoutTest.shouldNotTimeoutOnFastResponse(ReadTimeoutTest.java:47)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at io.quarkus.test.QuarkusUnitTest.runExtensionMethod(QuarkusUnitTest.java:363)
	at io.quarkus.test.QuarkusUnitTest...

📦 integration-tests/smallrye-config

io.quarkus.it.smallrye.config.ConfigLocationsTest.applicationYamlProfile - More details - Source on GitHub

java.lang.RuntimeException: java.lang.ExceptionInInitializerError
	at io.quarkus.test.junit.QuarkusTestExtension.throwBootFailureException(QuarkusTestExtension.java:712)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestClassConstructor(QuarkusTestExtension.java:785)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.api.extension.InvocationInterceptor.interceptTestClassConstructor(InvocationInterceptor.java:72)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter....

io.quarkus.it.smallrye.config.ConfigurableSourceTest.configurableSource - More details - Source on GitHub

java.lang.RuntimeException: java.lang.ExceptionInInitializerError
	at io.quarkus.test.junit.QuarkusTestExtension.throwBootFailureException(QuarkusTestExtension.java:712)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestClassConstructor(QuarkusTestExtension.java:785)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.api.extension.InvocationInterceptor.interceptTestClassConstructor(InvocationInterceptor.java:72)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter....

io.quarkus.it.smallrye.config.FallbackLocationsTest.fallback - More details - Source on GitHub

java.lang.RuntimeException: java.lang.ExceptionInInitializerError
	at io.quarkus.test.junit.QuarkusTestExtension.throwBootFailureException(QuarkusTestExtension.java:712)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestClassConstructor(QuarkusTestExtension.java:785)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.api.extension.InvocationInterceptor.interceptTestClassConstructor(InvocationInterceptor.java:72)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter....

io.quarkus.it.smallrye.config.QuarkusTestProfileTest.testProfile - More details - Source on GitHub

java.lang.RuntimeException: java.lang.ExceptionInInitializerError
	at io.quarkus.test.junit.QuarkusTestExtension.throwBootFailureException(QuarkusTestExtension.java:712)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestClassConstructor(QuarkusTestExtension.java:785)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.api.extension.InvocationInterceptor.interceptTestClassConstructor(InvocationInterceptor.java:72)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter....

📦 integration-tests/smallrye-opentracing

io.quarkus.it.rest.client.ZipkinIntegrationTest.testZipkinIntegration - More details - Source on GitHub

java.lang.RuntimeException: java.lang.ExceptionInInitializerError
	at io.quarkus.test.junit.QuarkusTestExtension.throwBootFailureException(QuarkusTestExtension.java:712)
	at io.quarkus.test.junit.QuarkusTestExtension.interceptTestClassConstructor(QuarkusTestExtension.java:785)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.api.extension.InvocationInterceptor.interceptTestClassConstructor(InvocationInterceptor.java:72)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter....

@mkouba
Copy link
Contributor Author

mkouba commented Jul 28, 2021

All CI jobs are green except for BasicTest.shouldMakeJsonRequest() from quarkus-integration-test-resteasy-reactive-rest-clien on JDK 11 Windows which failed with:

2021-07-28T11:13:53.5302870Z 2021-07-28 11:13:53,136 ERROR [org.jbo.res.rea.com.cor.AbstractResteasyReactiveContext] (executor-thread-0) Client was closed, however the result was not completed. Handlers array is: [org.jboss.resteasy.reactive.client.handlers.ClientRequestFilterRestHandler, org.jboss.resteasy.reactive.client.handlers.ClientRequestFilterRestHandler, org.jboss.resteasy.reactive.client.handlers.ClientRequestFilterRestHandler, org.jboss.resteasy.reactive.client.handlers.ClientRequestFilterRestHandler, org.jboss.resteasy.reactive.client.handlers.ClientObservabilityHandler, org.jboss.resteasy.reactive.client.handlers.ClientSendRequestHandler, org.jboss.resteasy.reactive.client.handlers.ClientSetResponseEntityRestHandler, org.jboss.resteasy.reactive.client.handlers.ClientResponseFilterRestHandler, org.jboss.resteasy.reactive.client.handlers.ClientResponseFilterRestHandler, org.jboss.resteasy.reactive.client.handlers.ClientResponseCompleteRestHandler]. Last executed handler is: org.jboss.resteasy.reactive.client.handlers.ClientResponseCompleteRestHandler
2021-07-28T11:13:53.5321853Z 2021-07-28 11:13:53,143 INFO  [io.ver.ext.web.RoutingContext] (vert.x-eventloop-thread-0) RoutingContext failure (500): javax.ws.rs.ProcessingException: Client request did not complete
2021-07-28T11:13:53.5324882Z 	at org.jboss.resteasy.reactive.client.impl.InvocationBuilderImpl.unwrap(InvocationBuilderImpl.java:210)
2021-07-28T11:13:53.5328187Z 	at org.jboss.resteasy.reactive.client.impl.InvocationBuilderImpl.method(InvocationBuilderImpl.java:326)
2021-07-28T11:13:53.5331366Z 	at io.quarkus.it.rest.client.main.AppleClient$$QuarkusRestClientInterface.swapApple(AppleClient$$QuarkusRestClientInterface.zig:633)
2021-07-28T11:13:53.5334471Z 	at io.quarkus.it.rest.client.main.ClientCallingResource.lambda$init$6(ClientCallingResource.java:67)
2021-07-28T11:13:53.5337166Z 	at io.vertx.ext.web.impl.BlockingHandlerDecorator.lambda$handle$0(BlockingHandlerDecorator.java:48)
2021-07-28T11:13:53.5339212Z 	at io.vertx.core.impl.ContextImpl.lambda$null$0(ContextImpl.java:160)
2021-07-28T11:13:53.5340845Z 	at io.vertx.core.impl.AbstractContext.dispatch(AbstractContext.java:96)
2021-07-28T11:13:53.5510269Z 	at io.vertx.core.impl.ContextImpl.lambda$executeBlocking$1(ContextImpl.java:158)
2021-07-28T11:13:53.5512454Z 	at io.vertx.core.impl.TaskQueue.run(TaskQueue.java:76)
2021-07-28T11:13:53.5514322Z 	at io.quarkus.vertx.core.runtime.VertxCoreRecorder$13.runWith(VertxCoreRecorder.java:536)
2021-07-28T11:13:53.5516348Z 	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2442)
2021-07-28T11:13:53.5518339Z 	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1476)
2021-07-28T11:13:53.5520246Z 	at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
2021-07-28T11:13:53.5523655Z 	at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
2021-07-28T11:13:53.5526301Z 	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
2021-07-28T11:13:53.5528007Z 	at java.base/java.lang.Thread.run(Thread.java:829)
2021-07-28T11:13:53.5529223Z Caused by: java.lang.IllegalStateException: Client request did not complete
2021-07-28T11:13:53.5531699Z 	at org.jboss.resteasy.reactive.client.impl.RestClientRequestContext.close(RestClientRequestContext.java:251)
2021-07-28T11:13:53.5536912Z 	at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:187)
2021-07-28T11:13:53.5540953Z 	at org.jboss.resteasy.reactive.client.impl.AsyncInvokerImpl.performRequestInternal(AsyncInvokerImpl.java:260)
2021-07-28T11:13:53.5546289Z 	at org.jboss.resteasy.reactive.client.impl.AsyncInvokerImpl.performRequestInternal(AsyncInvokerImpl.java:251)
2021-07-28T11:13:53.5561137Z 	at org.jboss.resteasy.reactive.client.impl.AsyncInvokerImpl.method(AsyncInvokerImpl.java:211)
2021-07-28T11:13:53.5563011Z 	... 15 more
2021-07-28T11:13:53.5563424Z 

I don't think it's related so I'm going to rebase and squash all commits.

@mkouba mkouba force-pushed the arc-remove-unused-interceptors branch from 9e34937 to 13fc068 Compare July 28, 2021 11:44
@geoand
Copy link
Contributor

geoand commented Jul 28, 2021

It is not related. It's some race condition that I yet to track down

@quarkus-bot
Copy link

quarkus-bot bot commented Jul 28, 2021

This workflow status is outdated as a new workflow run has been triggered.

Failing Jobs - Building 13fc068

Status Name Step Test failures Logs Raw logs
MicroProfile TCKs Tests Verify Test failures Logs Raw logs

Full information is available in the Build summary check run.

Test Failures

⚙️ MicroProfile TCKs Tests #

📦 tcks/microprofile-fault-tolerance

org.eclipse.microprofile.fault.tolerance.tck.TimeoutUninterruptableTest.testTimeoutAsyncBulkhead line 190 - More details - Source on GitHub

java.lang.AssertionError: Unexpected exception thrown from Future
	at org.testng.Assert.fail(Assert.java:85)
	at org.eclipse.microprofile.fault.tolerance.tck.util.Exceptions.expect(Exceptions.java:98)
	at org.eclipse.microprofile.fault.tolerance.tck.TimeoutUninterruptableTest.testTimeoutAsyncBulkhead(TimeoutUninterruptableTest.java:190)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at io.quarkus.arquillian.QuarkusProtocol$QuarkusMethodExecutor$1.invoke(QuarkusProtocol.java:87)
	at org.jboss.arquillian.container.test.impl.execution.LocalTestExecuter.execute(LocalTestExecuter.java:57)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base...

@mkouba
Copy link
Contributor Author

mkouba commented Jul 28, 2021

@Ladicek Just out of curiosity - have you ever seen this ^ TimeoutUninterruptableTest.testTimeoutAsyncBulkhead() TCK failure?

@Ladicek
Copy link
Contributor

Ladicek commented Jul 29, 2021

@mkouba Yea that's flaky (smallrye/smallrye-fault-tolerance#233), but it seems to only occur in Quarkus :-) I've never seen it in SRye Fault Tolerance CI.

@mkouba
Copy link
Contributor Author

mkouba commented Jul 29, 2021

Ok, so this PR is ready but should probably wait until the main branch corresponds to 2.3. @gsmet WDYT?

@mkouba mkouba force-pushed the arc-remove-unused-interceptors branch from 13fc068 to 4d41128 Compare August 2, 2021 07:00
@mkouba
Copy link
Contributor Author

mkouba commented Aug 2, 2021

Ok, so this PR is ready but should probably wait until the main branch corresponds to 2.3. @gsmet WDYT?

OTOH according to the release planning this PR would have to wait at least few weeks, which is acceptable but may cause headaches while resolving conflicts ;-).

@quarkus-bot
Copy link

quarkus-bot bot commented Aug 2, 2021

This workflow status is outdated as a new workflow run has been triggered.

Failing Jobs - Building 4d41128

Status Name Step Test failures Logs Raw logs
Gradle Tests - JDK 11 Windows Build ⚠️ Check → Logs Raw logs

gsmet
gsmet previously approved these changes Aug 5, 2021
Copy link
Member

@gsmet gsmet left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's wait for 2.3. Please dismiss once 2.2 is merged.

@gsmet gsmet dismissed their stale review August 5, 2021 07:39

Wrong checkbox :/

gsmet
gsmet previously requested changes Aug 5, 2021
Copy link
Member

@gsmet gsmet left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's wait for 2.3. Please dismiss once 2.2 is branched.

@mkouba mkouba force-pushed the arc-remove-unused-interceptors branch from 4d41128 to d9b73b1 Compare August 5, 2021 13:46
@quarkus-bot
Copy link

quarkus-bot bot commented Aug 5, 2021

This workflow status is outdated as a new workflow run has been triggered.

Failing Jobs - Building d9b73b1

Status Name Step Test failures Logs Raw logs
Devtools Tests - JDK 11 Download Maven Repo ⚠️ Check → Logs Raw logs
Devtools Tests - JDK 11 Windows Download Maven Repo ⚠️ Check → Logs Raw logs
Gradle Tests - JDK 11 Download Maven Repo ⚠️ Check → Logs Raw logs
Gradle Tests - JDK 11 Windows Download Maven Repo ⚠️ Check → Logs Raw logs
JVM Tests - JDK 11 Download Maven Repo ⚠️ Check → Logs Raw logs
JVM Tests - JDK 11 Windows Download Maven Repo ⚠️ Check → Logs Raw logs
JVM Tests - JDK 16 Download Maven Repo ⚠️ Check → Logs Raw logs
MicroProfile TCKs Tests Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - Amazon Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - Cache Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - Data1 Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - Data2 Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - Data3 Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - Data4 Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - Data5 Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - Data6 Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - Data7 Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - DevTools Integration Tests Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - HTTP Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - Main Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - Messaging1 Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - Messaging2 Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - Misc1 Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - Misc2 Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - Misc3 Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - Misc4 Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - Security1 Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - Security2 Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - Security3 Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - Spring Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - Windows - hibernate-validator Download Maven Repo ⚠️ Check → Logs Raw logs
Native Tests - gRPC Download Maven Repo ⚠️ Check → Logs Raw logs

- and beans injected only by these interceptors and decorators
- and beans that are only injected in removed beans
- log the full stack trace if DEBUG level is enabled
- fix JTA and SR CP integration - - the tx manager is obtained via
CDI.current().select(TransactionManager.class) in the JtaContextProvider
- fix SmallRye Metrics - MetricRegistries must be unremovable
- fix cache and rest-client integration
- fix SmallRye OpenTracing - make any bean that has io.opentracing.Tracer in bean types unremovable
- update the docs
@mkouba mkouba force-pushed the arc-remove-unused-interceptors branch from d9b73b1 to c547606 Compare August 10, 2021 11:06
@quarkus-bot
Copy link

quarkus-bot bot commented Aug 10, 2021

Failing Jobs - Building c547606

Status Name Step Test failures Logs Raw logs
Gradle Tests - JDK 11 Build ⚠️ Check → Logs Raw logs

@mkouba
Copy link
Contributor Author

mkouba commented Aug 12, 2021

I've also prepared a short blogpost about this optimization: https://github.com/mkouba/quarkusio.github.io-1/tree/unused-beans-next

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants