[ https://issues.apache.org/jira/browse/SYNCOPE-1448?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16800712#comment-16800712 ]
ASF subversion and git services commented on SYNCOPE-1448: ---------------------------------------------------------- Commit 64ec657ed0eed9efb22aca5e8334e99fb9b64038 in syncope's branch refs/heads/2_1_X from Francesco Chicchiriccò [ https://gitbox.apache.org/repos/asf?p=syncope.git;h=64ec657 ] [SYNCOPE-1448] Ensure Java 8 compatibility (2nd take) > Bean loading/register section not threadsafe > -------------------------------------------- > > Key: SYNCOPE-1448 > URL: https://issues.apache.org/jira/browse/SYNCOPE-1448 > Project: Syncope > Issue Type: Bug > Components: core > Affects Versions: 2.1.3 > Reporter: longstone > Assignee: Francesco Chicchiriccò > Priority: Major > Fix For: 2.1.4, 3.0.0 > > Time Spent: 10m > Remaining Estimate: 0h > > Issue: > When two threads (T1,T2) arrive the section {{if > (ApplicationContextProvider.getBeanFactory().containsSingleton(ruleClass.getName())) > {}}at the same time they will both assume that there is no bean, which is > right so far. > T1 register the bean as it should here > {{ApplicationContextProvider.getBeanFactory().registerSingleton(ruleClass.getName(), > rule);}}. As soon as T2does the same, an exception is thrown. > Solution: > When T1 and T2 found that a given bean is not there, they'll hit a > synchronized section with double checking. This will prevent the duplicated > creation and registration of a bean. -- This message was sent by Atlassian JIRA (v7.6.3#76005)