Skip to content

StackOverflowError for advisor search against factory-bean reference to FactoryBean [SPR-14551] #19119

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

Closed
spring-projects-issues opened this issue Aug 1, 2016 · 4 comments
Assignees
Labels
in: core Issues in core modules (aop, beans, core, context, expression) in: data Issues in data modules (jdbc, orm, oxm, tx) status: backported An issue that has been backported to maintenance branches type: bug A general bug
Milestone

Comments

@spring-projects-issues
Copy link
Collaborator

spring-projects-issues commented Aug 1, 2016

Victor Bronstein opened SPR-14551 and commented

StackOverflowError happens when powering up an application context that includes JPA Hibernate entity manager, defines tx:annotation-driven/ and Hibernate statistics bean.
The minimal project reproducing the issue is attached. Here's the snippet of the XML:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- Comment this line to make the test pass -->
    <tx:annotation-driven/>

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="packagesToScan" value="com.mycompany.*"/>
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect"/>
            </bean>
        </property>
    </bean>

    <bean name="dataSource" class="org.springframework.jdbc.datasource.SingleConnectionDataSource">
        <property name="driverClassName" value="org.h2.Driver"/>
        <property name="url" value="jdbc:h2:mem:test"/>
        <property name="username" value="sa"/>
    </bean>

    <bean id="sessionFactory" factory-bean="entityManagerFactory" factory-method="getSessionFactory" scope="prototype"/>
    <!-- Or comment this line to make the test pass -->
    <bean id="hibernateStatistics" factory-bean="sessionFactory" factory-method="getStatistics" scope="prototype"/>

</beans>

Affects: 3.2.17, 4.1.9, 4.2.7, 4.3.2

Attachments:

Issue Links:

Backported to: 4.2.8, 3.2.18

@spring-projects-issues
Copy link
Collaborator Author

Victor Bronstein commented

I didn't know what components to specify because it is not clear where the bug is. Sorry about that!
In the attached project there are comments in the context XML indicating the lines that when commented out, make StackOverflowError go away. I couldn't understand why the presence of these lines causes the issue to appear.

@spring-projects-issues
Copy link
Collaborator Author

Victor Bronstein commented

Did you manage to reproduce the issue? Is there something I can help with?

@spring-projects-issues
Copy link
Collaborator Author

Juergen Hoeller commented

It turns out that this was a case not caught by our currently-in-creation checks, only kicking in for a chain of factory-bean references that end up pointing to a FactoryBean implementation class. Fixed for 4.3.3 now, and to be backported to 4.2.8 and 3.2.18.

@spring-projects-issues
Copy link
Collaborator Author

Stéphane Nicoll commented

Tested the sample project with 4.3.3.BUILD-SNAPSHOT. Works fine now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
in: core Issues in core modules (aop, beans, core, context, expression) in: data Issues in data modules (jdbc, orm, oxm, tx) status: backported An issue that has been backported to maintenance branches type: bug A general bug
Projects
None yet
Development

No branches or pull requests

2 participants