[ https://issues.apache.org/jira/browse/HBASE-20583?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16564350#comment-16564350 ]
Hudson commented on HBASE-20583: -------------------------------- Results for branch branch-1.4 [build #403 on builds.a.o|https://builds.apache.org/job/HBase%20Nightly/job/branch-1.4/403/]: (x) *{color:red}-1 overall{color}* ---- details (if available): (x) {color:red}-1 general checks{color} -- For more information [see general report|https://builds.apache.org/job/HBase%20Nightly/job/branch-1.4/403//General_Nightly_Build_Report/] (x) {color:red}-1 jdk7 checks{color} -- For more information [see jdk7 report|https://builds.apache.org/job/HBase%20Nightly/job/branch-1.4/403//JDK7_Nightly_Build_Report/] (x) {color:red}-1 jdk8 hadoop2 checks{color} -- For more information [see jdk8 (hadoop2) report|https://builds.apache.org/job/HBase%20Nightly/job/branch-1.4/403//JDK8_Nightly_Build_Report_(Hadoop2)/] (x) {color:red}-1 source release artifact{color} -- See build output for details. > SplitLogWorker should handle FileNotFoundException when split a wal > ------------------------------------------------------------------- > > Key: HBASE-20583 > URL: https://issues.apache.org/jira/browse/HBASE-20583 > Project: HBase > Issue Type: Bug > Reporter: Guanghao Zhang > Assignee: Guanghao Zhang > Priority: Major > Fix For: 2.0.1 > > Attachments: HBASE-20583.master.001.patch, > HBASE-20583.master.001.patch > > > When a split task is finished, master will delete the wal first, then remove > the task's zk node. So if master crashed after delelte the wal, the zk task > node may be leaved on zk. When master resubmit this task, the task will > failed by FileNotFoundException. > We also handle FileNotFoundException in WALSplitter. But not handle this in > SplitLogWorker. > > {code:java} > try { > in = getReader(path, reporter); > } catch (EOFException e) { > if (length <= 0) { > // TODO should we ignore an empty, not-last log file if skip.errors > // is false? Either way, the caller should decide what to do. E.g. > // ignore if this is the last log in sequence. > // TODO is this scenario still possible if the log has been > // recovered (i.e. closed) > LOG.warn("Could not open {} for reading. File is empty", path, e); > } > // EOFException being ignored > return null; > } > } catch (IOException e) { > if (e instanceof FileNotFoundException) { > // A wal file may not exist anymore. Nothing can be recovered so move on > LOG.warn("File {} does not exist anymore", path, e); > return null; > } > }{code} > {code:java} > // Here fs.getFileStatus may throw FileNotFoundException, too. We should > handle this exception as the WALSplitter.getReader. > try { > if (!WALSplitter.splitLogFile(walDir, fs.getFileStatus(new Path(walDir, > filename)), > fs, conf, p, sequenceIdChecker, > server.getCoordinatedStateManager().getSplitLogWorkerCoordination(), > factory)) { > return Status.PREEMPTED; > } > } > {code} > > -- This message was sent by Atlassian JIRA (v7.6.3#76005)