You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2017/07/18 03:24:51 UTC
hbase git commit: HBASE-18377 Error handling for
FileNotFoundException should consider RemoteException in openReader()
Repository: hbase
Updated Branches:
refs/heads/master c423dc795 -> 0c2915b48
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/0c2915b4
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/0c2915b4
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/0c2915b4
Branch: refs/heads/master
Commit: 0c2915b48e157724cefee9f0dbe069ce3f04d0d4
Parents: c423dc7
Author: tedyu <yu...@gmail.com>
Authored: Mon Jul 17 20:24:29 2017 -0700
Committer: tedyu <yu...@gmail.com>
Committed: Mon Jul 17 20:24:29 2017 -0700
----------------------------------------------------------------------
.../regionserver/WALEntryStream.java | 22 +++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/0c2915b4/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);