hbase-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From apurt...@apache.org
Subject [3/4] hbase git commit: HBASE-12904 Threading issues in region_mover.rb
Date Thu, 22 Jan 2015 21:12:59 GMT
HBASE-12904 Threading issues in region_mover.rb


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/cad517a9
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/cad517a9
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/cad517a9

Branch: refs/heads/branch-1.0
Commit: cad517a9a5a4e8fb51d3822b62209b928f272592
Parents: 99b0f44
Author: Andrew Purtell <apurtell@apache.org>
Authored: Thu Jan 22 13:11:31 2015 -0800
Committer: Andrew Purtell <apurtell@apache.org>
Committed: Thu Jan 22 13:11:44 2015 -0800

----------------------------------------------------------------------
 bin/region_mover.rb | 81 ++++++++++++++----------------------------------
 1 file changed, 23 insertions(+), 58 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/cad517a9/bin/region_mover.rb
----------------------------------------------------------------------
diff --git a/bin/region_mover.rb b/bin/region_mover.rb
index 7dfedd1..7a09854 100644
--- a/bin/region_mover.rb
+++ b/bin/region_mover.rb
@@ -43,41 +43,6 @@ import org.apache.hadoop.hbase.HRegionInfo
 # Name of this script
 NAME = "region_mover"
 
-# Get meta table reference
-def getMetaTable(config)
-  # Keep meta reference in ruby global
-  if not $META
-    $META = HTable.new(config, HConstants::META_TABLE_NAME)
-  end
-  return $META
-end
-
-# Get table instance.
-# Maintains cache of table instances.
-def getTable(config, name)
-  # Keep dictionary of tables in ruby global
-  if not $TABLES
-    $TABLES = {}
-  end
-  key = name.toString()
-  if not $TABLES[key]
-    $TABLES[key] = HTable.new(config, name)
-  end
-  return $TABLES[key]
-end
-
-def closeTables()
-  if not $TABLES
-    return
-  end
-
-  $LOG.info("Close all tables")
-  $TABLES.each do |name, table|
-    $TABLES.delete(name)
-    table.close()
-  end
-end
-
 # Returns true if passed region is still on 'original' when we look at hbase:meta.
 def isSameServer(admin, r, original)
   server = getServerNameForRegion(admin, r)
@@ -111,17 +76,20 @@ def getServerNameForRegion(admin, r)
       zkw.close()
     end
   end
-  table = nil
-  table = getMetaTable(admin.getConfiguration())
-  g = Get.new(r.getRegionName())
-  g.addColumn(HConstants::CATALOG_FAMILY, HConstants::SERVER_QUALIFIER)
-  g.addColumn(HConstants::CATALOG_FAMILY, HConstants::STARTCODE_QUALIFIER)
-  result = table.get(g)
-  return nil unless result
-  server = result.getValue(HConstants::CATALOG_FAMILY, HConstants::SERVER_QUALIFIER)
-  startcode = result.getValue(HConstants::CATALOG_FAMILY, HConstants::STARTCODE_QUALIFIER)
-  return nil unless server
-  return java.lang.String.new(Bytes.toString(server)).replaceFirst(":", ",")  + "," + Bytes.toLong(startcode).to_s
+  table = HTable.new(admin.getConfiguration(), HConstants::META_TABLE_NAME)
+  begin
+    g = Get.new(r.getRegionName())
+    g.addColumn(HConstants::CATALOG_FAMILY, HConstants::SERVER_QUALIFIER)
+    g.addColumn(HConstants::CATALOG_FAMILY, HConstants::STARTCODE_QUALIFIER)
+    result = table.get(g)
+    return nil unless result
+    server = result.getValue(HConstants::CATALOG_FAMILY, HConstants::SERVER_QUALIFIER)
+    startcode = result.getValue(HConstants::CATALOG_FAMILY, HConstants::STARTCODE_QUALIFIER)
+    return nil unless server
+    return java.lang.String.new(Bytes.toString(server)).replaceFirst(":", ",")  + "," + Bytes.toLong(startcode).to_s
+  ensure
+    table.close()
+  end
 end
 
 # Trys to scan a row from passed region
@@ -132,23 +100,22 @@ def isSuccessfulScan(admin, r)
   scan.setCaching(1)
   scan.setFilter(FirstKeyOnlyFilter.new()) 
   begin
-    table = getTable(admin.getConfiguration(), r.getTableName())
+    table = HTable.new(admin.getConfiguration(), r.getTableName())
     scanner = table.getScanner(scan)
+    begin
+      results = scanner.next() 
+      # We might scan into next region, this might be an empty table.
+      # But if no exception, presume scanning is working.
+    ensure
+      scanner.close()
+    end
   rescue org.apache.hadoop.hbase.TableNotFoundException,
       org.apache.hadoop.hbase.TableNotEnabledException => e
     $LOG.warn("Region " + r.getEncodedName() + " belongs to recently " +
       "deleted/disabled table. Skipping... " + e.message)
     return
-  end
-  begin
-    results = scanner.next() 
-    # We might scan into next region, this might be an empty table.
-    # But if no exception, presume scanning is working.
   ensure
-    scanner.close()
-    # Do not close the htable. It is cached in $TABLES and 
-    # may be reused in moving another region of same table. 
-    # table.close()
+    table.close() unless table.nil?
   end
 end
 
@@ -517,5 +484,3 @@ case ARGV[0]
     puts optparse
     exit 3
 end
-
-closeTables()


Mime
View raw message