atlas-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Shwetha G S (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ATLAS-1014) Unnecessary locking and double checked locking for a threadlocal in RequestContext.
Date Tue, 12 Jul 2016 16:23:20 GMT

    [ https://issues.apache.org/jira/browse/ATLAS-1014?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15373174#comment-15373174
] 

Shwetha G S commented on ATLAS-1014:
------------------------------------

Yes, the locking can be removed. 
But, createContext() can't be removed with get() as we want to create new instance of request
context for every API call, want to reset thread local request context for each request.

> 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
>
> {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
(v6.3.4#6332)

Mime
View raw message