Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Done
-
None
-
None
-
None
Description
This Jira covers all the changes required to handle IO Failures on the Datanode. Handling an IO failure on the Datanode involves detecting failures as they happen and propagating the failure to the appropriate component in the system - possibly the Client and/or the SCM based on the type of failure.
At a high-level, IO Failure handling has the following goals:
1. Prevent Inconsistencies and corruption - due to non-handling or mishandling of failures.
2. Prevent any data loss - timely detection of failure and propagate correct error back to the initiator instead of silently dropping the data while the client assumes the operation is committed.
3. Contain the disruption in the system - if a disk volume fails on a DN, operations to the other nodes and volumes should not be affected.
Details pertaining to design and changes required are covered in the attached pdf document.
A sequence diagram used to analyse the Datanode IO Path is also attached, in svg format.
Attachments
Attachments
Issue Links
- incorporates
-
RATIS-573 Handle Raft Log Append Failure
- Resolved
- is related to
-
HDDS-9821 XceiverServerRatis SyncTimeoutRetry is overridden
- Resolved
-
RATIS-1947 TimeoutIOException in WriteLog might not release Pending Requests
- Resolved
1.
|
writeData in ChunkUtils should not use AsynchronousFileChannel | Resolved | Supratim Deka |
|
||||||||
2.
|
Handle Ratis Append Failure in Container State Machine | Resolved | Supratim Deka |
|
||||||||
3.
|
Propagate failure in writeStateMachineData to Ratis | Resolved | Supratim Deka |
|
||||||||
4.
|
Handle Apply Transaction Failure in State Machine | Resolved | Supratim Deka | |||||||||
5.
|
Handle Failure to Update Ozone Container YAML | Resolved | Supratim Deka |