[ 
https://issues.apache.org/jira/browse/KYLIN-1563?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Shaofeng SHI resolved KYLIN-1563.
---------------------------------
       Resolution: Fixed
    Fix Version/s: v1.5.2

> Unsafe check of initiated in HybridInstance#init()
> --------------------------------------------------
>
>                 Key: KYLIN-1563
>                 URL: https://issues.apache.org/jira/browse/KYLIN-1563
>             Project: Kylin
>          Issue Type: Bug
>            Reporter: Ted Yu
>            Assignee: Shaofeng SHI
>             Fix For: v1.5.2
>
>
> {code}
>     private void init() {
>         if (initiated == true)
>             return;
>         synchronized (this) {
>             if (initiated == true)
>                 return;
>             if (realizationEntries == null || realizationEntries.size() == 0)
>                 throw new IllegalArgumentException();
> {code}
> Suppose there are two threads executing the above code.
> Thread1 uses the value read from field initiated in the condition initiated 
> == true. It sees that the condition is false.
> Thread2 checks variable initiated, reading it after Thread1 assigns to 
> initiated but before some of the correlated field assignments take place. It 
> sees the condition initiated == true as being true. It continues on before 
> the critical section has completed, and can read data changed by that 
> critical section while it is in an inconsistent state.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to