[
https://issues.apache.org/jira/browse/HDFS-5257?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Vinay updated HDFS-5257:
------------------------
Attachment: HDFS-5257.patch
Thanks for review Jing and Uma.
I have added a check in DFSOutputStream.
This alone will solve the issue by asking for new block. But this will
completely avoid retry feature. So I feel better both should be present.
> addBlock() retry should return LocatedBlock with locations else client will
> get AIOBE
> -------------------------------------------------------------------------------------
>
> Key: HDFS-5257
> URL: https://issues.apache.org/jira/browse/HDFS-5257
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: hdfs-client, namenode
> Affects Versions: 2.1.1-beta
> Reporter: Vinay
> Assignee: Vinay
> Priority: Critical
> Attachments: HDFS-5257.patch, HDFS-5257.patch, HDFS-5257.patch,
> HDFS-5257.patch
>
>
> {{addBlock()}} call retry should return the LocatedBlock with locations if
> the block was created in previous call and failover/restart of namenode
> happened.
> otherwise client will get {{ArrayIndexOutOfBoundsException}} while creating
> the block and write will fail.
> {noformat}java.lang.ArrayIndexOutOfBoundsException: 0
> at
> org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.createBlockOutputStream(DFSOutputStream.java:1118)
> at
> org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.nextBlockOutputStream(DFSOutputStream.java:1078)
> at
> org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:511){noformat}
--
This message was sent by Atlassian JIRA
(v6.1#6144)