[
https://issues.apache.org/jira/browse/HIVE-1647?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Namit Jain updated HIVE-1647:
-----------------------------
Status: Open (was: Patch Available)
> Incorrect initialization of thread local variable inside IOContext (
> implementation is not threadsafe )
> --------------------------------------------------------------------------------------------------------
>
> Key: HIVE-1647
> URL: https://issues.apache.org/jira/browse/HIVE-1647
> Project: Hadoop Hive
> Issue Type: Bug
> Components: Server Infrastructure
> Affects Versions: 0.6.0, 0.7.0
> Reporter: Raman Grover
> Assignee: Liyin Tang
> Fix For: 0.7.0
>
> Attachments: HIVE-1647.patch
>
> Original Estimate: 0.17h
> Remaining Estimate: 0.17h
>
> Bug in org.apache.hadoop.hive.ql.io.IOContext
> in relation to initialization of thread local variable.
>
> public class IOContext {
>
> private static ThreadLocal<IOContext> threadLocal = new
> ThreadLocal<IOContext>(){ };
>
> static {
> if (threadLocal.get() == null) {
> threadLocal.set(new IOContext());
> }
> }
>
> In a multi-threaded environment, the thread that gets to load the class first
> for the JVM (assuming threads share the classloader),
> gets to initialize itself correctly by executing the code in the static
> block. Once the class is loaded,
> any subsequent threads would have their respective threadlocal variable as
> null. Since IOContext
> is set during initialization of HiveRecordReader, In a scenario where
> multiple threads get to acquire
> an instance of HiveRecordReader, it would result in a NPE for all but the
> first thread that gets to load the class in the VM.
>
> Is the above scenario of multiple threads initializing HiveRecordReader a
> typical one ? or we could just provide the following fix...
>
> private static ThreadLocal<IOContext> threadLocal = new
> ThreadLocal<IOContext>(){
> protected synchronized IOContext initialValue() {
> return new IOContext();
> }
> };
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.