[ https://issues.apache.org/jira/browse/HDFS-9923?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15292228#comment-15292228 ]
Wei-Chiu Chuang commented on HDFS-9923: --------------------------------------- HADOOP-12973 unintentionally changed this behavior: du errors will be caught and logged, but not propagated to the caller. > Datanode disk failure handling is not consistent > ------------------------------------------------ > > Key: HDFS-9923 > URL: https://issues.apache.org/jira/browse/HDFS-9923 > Project: Hadoop HDFS > Issue Type: Bug > Components: datanode > Reporter: Wei-Chiu Chuang > Labels: failure-handling, supportability > > Disk failures are hard to handle. This JIRA is created to discuss/improve > disk failure handling in a better/consistent manner. > For one thing, disks can fail in multiple different ways: the hardware might > be failing, disk space is full, checksum error ... For others, hardware > abstracts out the details, so it's hard for software to handle them. > There are currently three disk check mechanisms in HDFS, as far as I know: > {{BlockScanner}}, {{BlockPoolSlice#checkDirs}} and {{DU}}. Disk errors are > handled differently. > This JIRA is more focused on {{DU}} error handling. {{DU}} may emit errors > like this: > {noformat} > 2016-02-18 02:23:36,224 INFO > org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl: Caught > exception while scanning /data/8/dfs/dn/current. > Will throw later. > ExitCodeException exitCode=1: du: cannot access > `/data/8/dfs/dn/current/BP-1018136951-49.4.167.110-1403564146510/current/finalized/subdir228/subdir11/blk_ > 1088686909': Input/output error > du: cannot access > `/data/8/dfs/dn/current/BP-1018136951-49.4.167.110-1403564146510/current/finalized/subdir228/subdir11/blk_1088686909_14954023.meta': > Inp > ut/output error > {noformat} > I found {{DU}} errors are not handled consistently while working on HDFS-9908 > (Datanode should tolerate disk scan failure during NN handshake), and it all > depends on who catches the exception. > For example, > * if DU returns error during NN handshake, DN will not be able to join the > cluster at all(HDFS-9908); > * however, if the same exception is caught in {{BlockPoolSlice#saveDfsUsed}}, > data node will only log a warning and do nothing (HDFS-5498). > * in some cases, the exception handler invokes {{BlockPoolSlice#checkDirs}}, > but since it only checks three directories, it is very unlikely to find the > files that have the error. {{BlockReceiver#(constructor)}} > So my ask is: should the error be handled in a consistent manner? Should data > node report to the name nodes about the disk failures (this is the > BlockScanner approach), and should data node takes this volume offline > automatically if DU returns an error? (this is the {{checkDirs}} approach) -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org