Skip to content

Commit 71463fb

Browse files
committed
AbstractBeanFactory consistently guards add/remove operations against alreadyCreated Set
Issue: SPR-14269
1 parent 9064d38 commit 71463fb

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1504,10 +1504,11 @@ else if (mbd.isLazyInit()) {
15041504
protected void markBeanAsCreated(String beanName) {
15051505
if (!this.alreadyCreated.contains(beanName)) {
15061506
synchronized (this.mergedBeanDefinitions) {
1507-
if (this.alreadyCreated.add(beanName)) {
1507+
if (!this.alreadyCreated.contains(beanName)) {
15081508
// Let the bean definition get re-merged now that we're actually creating
15091509
// the bean... just in case some of its metadata changed in the meantime.
15101510
clearMergedBeanDefinition(beanName);
1511+
this.alreadyCreated.add(beanName);
15111512
}
15121513
}
15131514
}
@@ -1518,7 +1519,9 @@ protected void markBeanAsCreated(String beanName) {
15181519
* @param beanName the name of the bean
15191520
*/
15201521
protected void cleanupAfterBeanCreationFailure(String beanName) {
1521-
this.alreadyCreated.remove(beanName);
1522+
synchronized (this.mergedBeanDefinitions) {
1523+
this.alreadyCreated.remove(beanName);
1524+
}
15221525
}
15231526

15241527
/**

0 commit comments

Comments
 (0)