[
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)