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)