Repository: hbase Updated Branches: refs/heads/branch-1-HBASE-18147 7a41eaeda -> 4a2c0c38f (forced update)
HBASE-18377 Error handling for FileNotFoundException should consider RemoteException in openReader() Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/5a28437a Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/5a28437a Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/5a28437a Branch: refs/heads/branch-1-HBASE-18147 Commit: 5a28437a74f5569715de79061426165151f57e79 Parents: 1b8fb0a Author: tedyu <yuzhih...@gmail.com> Authored: Tue Jul 18 06:50:02 2017 -0700 Committer: tedyu <yuzhih...@gmail.com> Committed: Tue Jul 18 06:50:02 2017 -0700 ---------------------------------------------------------------------- .../regionserver/WALEntryStream.java | 22 +++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/5a28437a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.java index c4d552c..4f49955 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.java @@ -41,6 +41,7 @@ import org.apache.hadoop.hbase.util.LeaseNotRecoveredException; import org.apache.hadoop.hbase.wal.WAL.Entry; import org.apache.hadoop.hbase.wal.WAL.Reader; import org.apache.hadoop.hbase.wal.WALFactory; +import org.apache.hadoop.ipc.RemoteException; /** * Streaming access to WAL entries. This class is given a queue of WAL {@link Path}, and continually @@ -316,6 +317,15 @@ public class WALEntryStream implements Iterator<Entry>, Closeable, Iterable<Entr } } + private void handleFileNotFound(Path path, FileNotFoundException fnfe) throws IOException { + // If the log was archived, continue reading from there + Path archivedLog = getArchivedLog(path); + if (!path.equals(archivedLog)) { + openReader(archivedLog); + } else { + throw fnfe; + } + } private void openReader(Path path) throws IOException { try { // Detect if this is a new file, if so get a new reader else @@ -329,13 +339,11 @@ public class WALEntryStream implements Iterator<Entry>, Closeable, Iterable<Entr resetReader(); } } catch (FileNotFoundException fnfe) { - // If the log was archived, continue reading from there - Path archivedLog = getArchivedLog(path); - if (!path.equals(archivedLog)) { - openReader(archivedLog); - } else { - throw fnfe; - } + handleFileNotFound(path, fnfe); + } catch (RemoteException re) { + IOException ioe = re.unwrapRemoteException(FileNotFoundException.class); + if (!(ioe instanceof FileNotFoundException)) throw ioe; + handleFileNotFound(path, (FileNotFoundException)ioe); } catch (LeaseNotRecoveredException lnre) { // HBASE-15019 the WAL was not closed due to some hiccup. LOG.warn("Try to recover the WAL lease " + currentPath, lnre);