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

Madhan Neethiraj resolved ATLAS-1014.
-------------------------------------
    Resolution: Done

> Unnecessary locking and double checked locking for a threadlocal in 
> RequestContext.
> -----------------------------------------------------------------------------------
>
>                 Key: ATLAS-1014
>                 URL: https://issues.apache.org/jira/browse/ATLAS-1014
>             Project: Atlas
>          Issue Type: Task
>            Reporter: Satish Duggana
>            Priority: Major
>
> {code:java}
>     public static RequestContext get() {
>         if (CURRENT_CONTEXT.get() == null) {
>             synchronized (RequestContext.class) {
>                 if (CURRENT_CONTEXT.get() == null) {
>                     createContext();
>                 }
>             }
>         }
>         return CURRENT_CONTEXT.get();
>     }
> {code}
> There is no need to have double checked locking and synchronization for 
> setting a threadlocal state. That logic can be removed by adding the below 
> code while instantiating CURRENT_CONTEXT.
> {code:java}
>     private static final ThreadLocal<RequestContext> CURRENT_CONTEXT = new 
> ThreadLocal<RequestContext>() {
>         @Override
>         protected RequestContext initialValue() {
>             RequestContext context = new RequestContext();
>             context.requestTime = System.currentTimeMillis();
>             return context;
>         }
>     };
> {code}
> RequestContext#createContext usages can be changed to RequestContext#get



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to