From 27909dadfe9163084eceddce9e939b006ff1ae5f Mon Sep 17 00:00:00 2001 From: Nick Dimiduk Date: Wed, 3 Jun 2015 16:07:48 -0700 Subject: [PATCH] HBASE-13833 LoadIncrementalHFile.doBulkLoad(Path,HTable) doesn't handle unmanaged connections when using SecureBulkLoad --- .../hadoop/hbase/mapreduce/LoadIncrementalHFiles.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/LoadIncrementalHFiles.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/LoadIncrementalHFiles.java index 827699b..686e85c 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/LoadIncrementalHFiles.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/LoadIncrementalHFiles.java @@ -45,6 +45,7 @@ import org.apache.hadoop.hbase.TableNotFoundException; import org.apache.hadoop.hbase.classification.InterfaceAudience; import org.apache.hadoop.hbase.classification.InterfaceStability; import org.apache.hadoop.hbase.client.Admin; +import org.apache.hadoop.hbase.client.ClusterConnection; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.client.HBaseAdmin; @@ -292,14 +293,21 @@ public class LoadIncrementalHFiles extends Configured implements Tool { { Admin admin = null; try { - try { - admin = table.getConnection().getAdmin(); - } catch (NeedUnmanagedConnectionException ex) { - admin = new HBaseAdmin(table.getConfiguration()); + Connection conn = table.getConnection(); + if (conn instanceof ClusterConnection && ((ClusterConnection) conn).isManaged()) { + LOG.warn("unmanaged connection cannot be used for bulkload. Creating managed connection."); + // can only use unmanaged connections from here on out. + conn = ConnectionFactory.createConnection(table.getConfiguration()); + if (conn instanceof ClusterConnection && ((ClusterConnection) conn).isManaged()) { + throw new RuntimeException("Failed to create unmanaged connection."); + } + admin = conn.getAdmin(); + } else { + admin = conn.getAdmin(); } doBulkLoad(hfofDir, admin, table, table.getRegionLocator()); } finally { - admin.close(); + if (admin != null) admin.close(); } } -- 1.9.5 (Apple Git-50.3)