You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-dev@hadoop.apache.org by "Sean Busbey (JIRA)" <ji...@apache.org> on 2015/05/14 15:47:00 UTC

[jira] [Created] (HADOOP-11969) Text encoder/decoder factory initialization are not thread safe

Sean Busbey created HADOOP-11969:
------------------------------------

             Summary: Text encoder/decoder factory initialization are not thread safe
                 Key: HADOOP-11969
                 URL: https://issues.apache.org/jira/browse/HADOOP-11969
             Project: Hadoop Common
          Issue Type: Bug
          Components: io
            Reporter: Sean Busbey
            Assignee: Sean Busbey
            Priority: Critical


Right now, the initialization of hte thread local factories for encoder / decoder in Text are not marked final. This means they end up with a static initializer that is not guaranteed to be finished running before the members are visible. 

Under heavy contention, this means during initialization some users will get an NPE:

{code}
(2015-05-05 08:58:03.974 : solr_server_log.log) 
 org.apache.solr.common.SolrException; null:java.lang.NullPointerException
	at org.apache.hadoop.io.Text.decode(Text.java:406)
	at org.apache.hadoop.io.Text.decode(Text.java:389)
	at org.apache.hadoop.io.Text.toString(Text.java:280)
	at org.apache.hadoop.hdfs.protocolPB.PBHelper.convert(PBHelper.java:764)
	at org.apache.hadoop.hdfs.protocol.datatransfer.DataTransferProtoUtil.buildBaseHeader(DataTransferProtoUtil.java:81)
	at org.apache.hadoop.hdfs.protocol.datatransfer.DataTransferProtoUtil.buildClientHeader(DataTransferProtoUtil.java:71)
	at org.apache.hadoop.hdfs.protocol.datatransfer.Sender.readBlock(Sender.java:101)
	at org.apache.hadoop.hdfs.RemoteBlockReader2.newBlockReader(RemoteBlockReader2.java:400)
	at org.apache.hadoop.hdfs.BlockReaderFactory.getRemoteBlockReader(BlockReaderFactory.java:785)
	at org.apache.hadoop.hdfs.BlockReaderFactory.getRemoteBlockReaderFromTcp(BlockReaderFactory.java:663)
	at org.apache.hadoop.hdfs.BlockReaderFactory.build(BlockReaderFactory.java:327)
	at org.apache.hadoop.hdfs.DFSInputStream.actualGetFromOneDataNode(DFSInputStream.java:1027)
	at org.apache.hadoop.hdfs.DFSInputStream.fetchBlockByteRange(DFSInputStream.java:974)
	at org.apache.hadoop.hdfs.DFSInputStream.read(DFSInputStream.java:1305)
	at org.apache.hadoop.fs.FSInputStream.readFully(FSInputStream.java:78)
	at org.apache.hadoop.fs.FSDataInputStream.readFully(FSDataInputStream.java:107)
... SNIP...
{code} 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)