Details
-
Bug
-
Status: Patch Available
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
Description
DFSOutputStream#close can throw an IOException in some cases. One example is if there is a pipeline error and then pipeline recovery fails. Unfortunately, in this case, some of the resources used by the DFSOutputStream are leaked. One particularly important resource is file leases.
So it's possible for a long-lived HDFS client, such as Flume, to write many blocks to a file, but then fail to close it. Unfortunately, the LeaseRenewerThread inside the client will continue to renew the lease for the "undead" file. Future attempts to close the file will just rethrow the previous exception, and no progress can be made by the client.
Attachments
Attachments
Issue Links
- blocks
-
HDFS-4688 DFSClient should not allow multiple concurrent creates for the same file
- Open
- is duplicated by
-
HDFS-4855 DFSOutputStream reference should be cleared from DFSClient#filesBeingWritten if the file closure fails.
- Resolved
- is related to
-
HDFS-6652 RecoverLease cannot succeed and file cannot be closed under high load
- Open