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

Spring Boot 3.2.4 Test Failures #40370

Closed
markdiuk opened this issue Apr 16, 2024 · 1 comment
Closed

Spring Boot 3.2.4 Test Failures #40370

markdiuk opened this issue Apr 16, 2024 · 1 comment
Labels
for: external-project For an external project and not something we can fix status: invalid An issue that we don't feel is valid

Comments

@markdiuk
Copy link

markdiuk commented Apr 16, 2024

There is an observed testing issue when updating to Spring Boot 3.2.4 also present in 3.3.0 milestones.

Project and tests have been running for years.

Tests still pass individually so potentially contamination/stale cache in the test context?

Looking at release notes maybe this is related?

spring-projects/spring-data-commons#2974

java.lang.IllegalStateException: Failed to load ApplicationContext for [MergedContextConfiguration@30653ef3 testClass = org.redacted.RepositoryIntegrationTest, locations = [], classes = [org.redacted.Application], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["spring.profiles.include=NO_CACHE", "org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.OverrideAutoConfigurationContextCustomizerFactory$DisableAutoConfigurationContextCustomizer@5e8df0ac, org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.filter.TypeExcludeFiltersContextCustomizer@34be3d80, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@4af2beb5, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@399a5a52, [ImportsContextCustomizer@6c7ff05e key = [org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration, org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration, org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManagerAutoConfiguration, org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration, org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration, org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration, org.springframework.boot.test.autoconfigure.jdbc.TestDatabaseAutoConfiguration, org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration, org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration, org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration, org.springframework.boot.autoconfigure.jdbc.JdbcClientAutoConfiguration, org.redacted.junit5.cfg.H2DatabaseConfiguration, org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration, org.redacted.junit5.cfg.TestDataServiceHelperConfiguration, org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration, org.redacted.junit5.cfg.DataServiceRepositoryAuditTestConfiguration]], org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@3eadfbbb, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@67eabe02, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.context.SpringBootTestAnnotation@84319d6b], contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null]
	at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:180)
	at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:130)
	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:142)
	at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:98)
	at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:260)
	at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:163)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:310)
	at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735)
	at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734)
	at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
	at java.base/java.util.Optional.orElseGet(Optional.java:364)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'allInviteRepository' defined in org.redacted.AllInviteRepository defined in @EnableJpaRepositories declared on Application: null
	at app//org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1786)
	at app//org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600)
	at app//org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
	at app//org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326)
	at app//org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at app//org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
	at app//org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
	at app//org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:969)
	at app//org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:962)
	at app//org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624)
	at app//org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
	at app//org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456)
	at app//org.springframework.boot.SpringApplication.run(SpringApplication.java:334)
	at app//org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3(SpringBootContextLoader.java:137)
	at app//org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58)
	at app//org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46)
	at app//org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1454)
	at app//org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:553)
	at app//org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:137)
	at app//org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:108)
	at app//org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:225)
	at app//org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:152)
	... 17 more
Caused by: java.lang.StackOverflowError
	at java.base/java.util.ArrayList.equals(ArrayList.java:529)
	at org.springframework.util.ObjectUtils.nullSafeEquals(ObjectUtils.java:341)
	at org.springframework.data.util.TypeDiscoverer.equals(TypeDiscoverer.java:334)
	at java.base/java.util.Objects.equals(Objects.java:64)
	at java.base/java.util.ArrayList.equalsArrayList(ArrayList.java:561)
	at java.base/java.util.ArrayList.equals(ArrayList.java:529)
	at org.springframework.util.ObjectUtils.nullSafeEquals(ObjectUtils.java:341)
	at org.springframework.data.util.TypeDiscoverer.equals(TypeDiscoverer.java:334)
	at java.base/java.util.Objects.equals(Objects.java:64)
	at java.base/java.util.ArrayList.equalsArrayList(ArrayList.java:561)
	at java.base/java.util.ArrayList.equals(ArrayList.java:529)
	at org.springframework.util.ObjectUtils.nullSafeEquals(ObjectUtils.java:341)
	at org.springframework.data.util.TypeDiscoverer.equals(TypeDiscoverer.java:334)
	at java.base/java.util.Objects.equals(Objects.java:64)
	at java.base/java.util.ArrayList.equalsArrayList(ArrayList.java:561)
	at java.base/java.util.ArrayList.equals(ArrayList.java:529)
	at org.springframework.util.ObjectUtils.nullSafeEquals(ObjectUtils.java:341)
	at org.springframework.data.util.TypeDiscoverer.equals(TypeDiscoverer.java:334)
	at java.base/java.util.Objects.equals(Objects.java:64)
	at java.base/java.util.ArrayList.equalsArrayList(ArrayList.java:561)
	at java.base/java.util.ArrayList.equals(ArrayList.java:529)
	at org.springframework.util.ObjectUtils.nullSafeEquals(ObjectUtils.java:341)
	at org.springframework.data.util.TypeDiscoverer.equals(TypeDiscoverer.java:334)
	at java.base/java.util.Objects.equals(Objects.java:64)
	at java.base/java.util.ArrayList.equalsArrayList(ArrayList.java:561)
@spring-projects-issues spring-projects-issues added the status: waiting-for-triage An issue we've not yet triaged label Apr 16, 2024
@wilkinsona
Copy link
Member

Yes, this would appear to be a problem in Spring Data's TypeDiscoverer that is causing the stack to overflow. Please create a minimal sample that reproduces the problem and then report it in the Spring Data Commons repository.

@wilkinsona wilkinsona closed this as not planned Won't fix, can't repro, duplicate, stale Apr 16, 2024
@wilkinsona wilkinsona added status: invalid An issue that we don't feel is valid for: external-project For an external project and not something we can fix and removed status: waiting-for-triage An issue we've not yet triaged labels Apr 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
for: external-project For an external project and not something we can fix status: invalid An issue that we don't feel is valid
Projects
None yet
Development

No branches or pull requests

3 participants