You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by we...@apache.org on 2024/06/12 17:58:56 UTC
(hbase) branch branch-3 updated: HBASE-28637 asyncwal should attempt to recover lease if close fails (#5962)
This is an automated email from the ASF dual-hosted git repository.
weichiu pushed a commit to branch branch-3
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-3 by this push:
new b88129617ca HBASE-28637 asyncwal should attempt to recover lease if close fails (#5962)
b88129617ca is described below
commit b88129617ca1bb06948bd07a972c8a4f2121c02c
Author: Wei-Chiu Chuang <we...@apache.org>
AuthorDate: Wed Jun 12 10:33:02 2024 -0700
HBASE-28637 asyncwal should attempt to recover lease if close fails (#5962)
Signed-off-by: Duo Zhang <zh...@apache.org>
(cherry picked from commit 0e8cfdb507723729a2cade50ea364149eec3466c)
---
.../apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.java | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.java
index 5f06b04cdf9..bba9bd534e9 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.java
@@ -96,6 +96,7 @@ import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.CommonFSUtils;
import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
import org.apache.hadoop.hbase.util.Pair;
+import org.apache.hadoop.hbase.util.RecoverLeaseFSUtils;
import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;
import org.apache.hadoop.hbase.wal.WAL;
import org.apache.hadoop.hbase.wal.WALEdit;
@@ -2022,13 +2023,22 @@ public abstract class AbstractFSWAL<W extends WriterBase> implements WAL {
}
}
+ private void recoverLease(FileSystem fs, Path p, Configuration conf) {
+ try {
+ RecoverLeaseFSUtils.recoverFileLease(fs, p, conf, null);
+ } catch (IOException ex) {
+ LOG.error("Unable to recover lease after several attempts. Give up.", ex);
+ }
+ }
+
protected final void closeWriter(W writer, Path path) {
inflightWALClosures.put(path.getName(), writer);
closeExecutor.execute(() -> {
try {
writer.close();
} catch (IOException e) {
- LOG.warn("close old writer failed", e);
+ LOG.warn("close old writer failed.", e);
+ recoverLease(this.fs, path, conf);
} finally {
// call this even if the above close fails, as there is no other chance we can set closed to
// true, it will not cause big problems.