(TEPHRA-226) Use older API to run as login user
This closes #39 from GitHub.
Signed-off-by: Gokul Gunasekaran <gokul@cask.co>
diff --git a/tephra-hbase-compat-0.96/src/main/java/org/apache/tephra/hbase/txprune/PruneUpperBoundWriter.java b/tephra-hbase-compat-0.96/src/main/java/org/apache/tephra/hbase/txprune/PruneUpperBoundWriter.java
index 7e4a0fa..1c26ef1 100644
--- a/tephra-hbase-compat-0.96/src/main/java/org/apache/tephra/hbase/txprune/PruneUpperBoundWriter.java
+++ b/tephra-hbase-compat-0.96/src/main/java/org/apache/tephra/hbase/txprune/PruneUpperBoundWriter.java
@@ -161,7 +161,7 @@
private void handleException(Exception ex) {
LOG.warn("Cannot record prune upper bound for a region to table " +
tableName.getNamespaceAsString() + ":" + tableName.getNameAsString(), ex);
- if (ex instanceof IOException) {
+ if (ex instanceof InterruptedException) {
Thread.currentThread().interrupt();
}
}
diff --git a/tephra-hbase-compat-0.98/src/main/java/org/apache/tephra/hbase/txprune/PruneUpperBoundWriter.java b/tephra-hbase-compat-0.98/src/main/java/org/apache/tephra/hbase/txprune/PruneUpperBoundWriter.java
index 38c1a6f..1c26ef1 100644
--- a/tephra-hbase-compat-0.98/src/main/java/org/apache/tephra/hbase/txprune/PruneUpperBoundWriter.java
+++ b/tephra-hbase-compat-0.98/src/main/java/org/apache/tephra/hbase/txprune/PruneUpperBoundWriter.java
@@ -22,8 +22,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.hbase.TableName;
-import org.apache.hadoop.hbase.security.User;
import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.hadoop.security.UserGroupInformation;
import java.io.IOException;
import java.security.PrivilegedExceptionAction;
@@ -106,7 +106,7 @@
if (now > (lastChecked + pruneFlushInterval)) {
// should flush data
try {
- User.runAsLoginUser(new PrivilegedExceptionAction<Void>() {
+ UserGroupInformation.getLoginUser().doAs(new PrivilegedExceptionAction<Void>() {
@Override
public Void run() throws Exception {
// Record prune upper bound
@@ -128,9 +128,9 @@
return null;
}
});
- } catch (IOException ex) {
- LOG.warn("Cannot record prune upper bound for a region to table " +
- tableName.getNamespaceAsString() + ":" + tableName.getNameAsString(), ex);
+ } catch (IOException | InterruptedException ex) {
+ // Handle any exception that might be thrown during HBase operation
+ handleException(ex);
}
lastChecked = now;
}
@@ -157,4 +157,12 @@
Bytes.toStringBinary(regionName), isRunning() ? "alive" : "running"));
}
}
+
+ private void handleException(Exception ex) {
+ LOG.warn("Cannot record prune upper bound for a region to table " +
+ tableName.getNamespaceAsString() + ":" + tableName.getNameAsString(), ex);
+ if (ex instanceof InterruptedException) {
+ Thread.currentThread().interrupt();
+ }
+ }
}
diff --git a/tephra-hbase-compat-1.0-cdh/src/main/java/org/apache/tephra/hbase/txprune/PruneUpperBoundWriter.java b/tephra-hbase-compat-1.0-cdh/src/main/java/org/apache/tephra/hbase/txprune/PruneUpperBoundWriter.java
index 6bd8bab..1c26ef1 100644
--- a/tephra-hbase-compat-1.0-cdh/src/main/java/org/apache/tephra/hbase/txprune/PruneUpperBoundWriter.java
+++ b/tephra-hbase-compat-1.0-cdh/src/main/java/org/apache/tephra/hbase/txprune/PruneUpperBoundWriter.java
@@ -22,8 +22,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.hbase.TableName;
-import org.apache.hadoop.hbase.security.User;
import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.hadoop.security.UserGroupInformation;
import java.io.IOException;
import java.security.PrivilegedExceptionAction;
@@ -106,7 +106,7 @@
if (now > (lastChecked + pruneFlushInterval)) {
// should flush data
try {
- User.runAsLoginUser(new PrivilegedExceptionAction<Void>() {
+ UserGroupInformation.getLoginUser().doAs(new PrivilegedExceptionAction<Void>() {
@Override
public Void run() throws Exception {
// Record prune upper bound
@@ -128,9 +128,9 @@
return null;
}
});
- } catch (IOException ex) {
- LOG.warn("Cannot record prune upper bound for a region to table " +
- tableName.getNameWithNamespaceInclAsString(), ex);
+ } catch (IOException | InterruptedException ex) {
+ // Handle any exception that might be thrown during HBase operation
+ handleException(ex);
}
lastChecked = now;
}
@@ -157,4 +157,12 @@
Bytes.toStringBinary(regionName), isRunning() ? "alive" : "running"));
}
}
+
+ private void handleException(Exception ex) {
+ LOG.warn("Cannot record prune upper bound for a region to table " +
+ tableName.getNamespaceAsString() + ":" + tableName.getNameAsString(), ex);
+ if (ex instanceof InterruptedException) {
+ Thread.currentThread().interrupt();
+ }
+ }
}
diff --git a/tephra-hbase-compat-1.0/src/main/java/org/apache/tephra/hbase/txprune/PruneUpperBoundWriter.java b/tephra-hbase-compat-1.0/src/main/java/org/apache/tephra/hbase/txprune/PruneUpperBoundWriter.java
index 38c1a6f..1c26ef1 100644
--- a/tephra-hbase-compat-1.0/src/main/java/org/apache/tephra/hbase/txprune/PruneUpperBoundWriter.java
+++ b/tephra-hbase-compat-1.0/src/main/java/org/apache/tephra/hbase/txprune/PruneUpperBoundWriter.java
@@ -22,8 +22,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.hbase.TableName;
-import org.apache.hadoop.hbase.security.User;
import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.hadoop.security.UserGroupInformation;
import java.io.IOException;
import java.security.PrivilegedExceptionAction;
@@ -106,7 +106,7 @@
if (now > (lastChecked + pruneFlushInterval)) {
// should flush data
try {
- User.runAsLoginUser(new PrivilegedExceptionAction<Void>() {
+ UserGroupInformation.getLoginUser().doAs(new PrivilegedExceptionAction<Void>() {
@Override
public Void run() throws Exception {
// Record prune upper bound
@@ -128,9 +128,9 @@
return null;
}
});
- } catch (IOException ex) {
- LOG.warn("Cannot record prune upper bound for a region to table " +
- tableName.getNamespaceAsString() + ":" + tableName.getNameAsString(), ex);
+ } catch (IOException | InterruptedException ex) {
+ // Handle any exception that might be thrown during HBase operation
+ handleException(ex);
}
lastChecked = now;
}
@@ -157,4 +157,12 @@
Bytes.toStringBinary(regionName), isRunning() ? "alive" : "running"));
}
}
+
+ private void handleException(Exception ex) {
+ LOG.warn("Cannot record prune upper bound for a region to table " +
+ tableName.getNamespaceAsString() + ":" + tableName.getNameAsString(), ex);
+ if (ex instanceof InterruptedException) {
+ Thread.currentThread().interrupt();
+ }
+ }
}