Xiao Chen created HDFS-9250:
-------------------------------
Summary: LocatedBlock#addCachedLoc may throw ArrayStoreException
when cache is empty
Key: HDFS-9250
URL: https://issues.apache.org/jira/browse/HDFS-9250
Project: Hadoop HDFS
Issue Type: Bug
Components: HDFS
Reporter: Xiao Chen
Assignee: Xiao Chen
We may see the following exception:
{noformat}
java.lang.ArrayStoreException
at java.util.ArrayList.toArray(ArrayList.java:389)
at
org.apache.hadoop.hdfs.protocol.LocatedBlock.addCachedLoc(LocatedBlock.java:205)
at
org.apache.hadoop.hdfs.server.namenode.CacheManager.setCachedLocations(CacheManager.java:907)
at
org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocationsUpdateTimes(FSNamesystem.java:1974)
at
org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocationsInt(FSNamesystem.java:1873)
{noformat}
The cause is that in LocatedBlock.java, when {{addCachedLoc}}:
- Passed in parameter {{loc}}, which is type {{DatanodeDescriptor}}, is added
to {{cachedList}}
- {{cachedList}} was assigned to {{EMPTY_LOCS}}, which is type
{{DatanodeInfoWithStorage}}.
Both {{DatanodeDescriptor}} and {{DatanodeInfoWithStorage}} are subclasses of
{{DatanodeInfo}} but do not inherit from each other, resulting in the
ArrayStoreException.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)