[
https://issues.apache.org/jira/browse/HDFS-10257?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15225669#comment-15225669
]
Stephen Bovy commented on HDFS-10257:
-------------------------------------
When someone wants to use "HAVE_BETTER_TLS" (quick thread local storage)
The code should not execute ""threadLocalStorageSet" because it is not
needed and not required.
The changes I recommended would fix this
First the MACRO "THREAD_LOCAL_STORAGE_SET_QUICK" should be changed
so that after
quickTlsEnv = (env); is set
Then we should
return env;
Secondly
the order for invoking the MACRO should be changed
THREAD_LOCAL_STORAGE_SET_QUICK(env);
if (threadLocalStorageSet(env))
{ return NULL; }
> Quick Thread Local Storage set-up has a small flaw
> --------------------------------------------------
>
> Key: HDFS-10257
> URL: https://issues.apache.org/jira/browse/HDFS-10257
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: libhdfs
> Affects Versions: 2.6.4
> Environment: Linux
> Reporter: Stephen Bovy
> Priority: Minor
> Original Estimate: 72h
> Remaining Estimate: 72h
>
> In jni_helper.c in the getJNIEnv function
> The “THREAD_LOCAL_STORAGE_SET_QUICK(env);” Macro is in the wrong
> location;
> It should precede the “threadLocalStorageSet(env)” as follows ::
> THREAD_LOCAL_STORAGE_SET_QUICK(env);
> if (threadLocalStorageSet(env)) {
> return NULL;
> }
> AND IN “thread_local_storage.h” the macro:
> “THREAD_LOCAL_STORAGE_SET_QUICK”
> should be as follows ::
> #ifdef HAVE_BETTER_TLS
> #define THREAD_LOCAL_STORAGE_GET_QUICK() \
> static __thread JNIEnv *quickTlsEnv = NULL; \
> { \
> if (quickTlsEnv) { \
> return quickTlsEnv; \
> } \
> }
> #define THREAD_LOCAL_STORAGE_SET_QUICK(env) \
> { \
> quickTlsEnv = (env); \
> return env;
> }
> #else
> #define THREAD_LOCAL_STORAGE_GET_QUICK()
> #define THREAD_LOCAL_STORAGE_SET_QUICK(env)
> #endif
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)