From 10586c46c46a8a1b24d19a55a031518bcbfbbbd8 Mon Sep 17 00:00:00 2001 From: Yi Liang Date: Wed, 27 Sep 2017 15:53:33 -0700 Subject: [PATCH] HBASE-18894: null pointer exception in list_regions in shell command --- .../src/main/ruby/shell/commands/list_regions.rb | 39 +++++++++++++--------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/hbase-shell/src/main/ruby/shell/commands/list_regions.rb b/hbase-shell/src/main/ruby/shell/commands/list_regions.rb index 5feb926..daf29d5 100644 --- a/hbase-shell/src/main/ruby/shell/commands/list_regions.rb +++ b/hbase-shell/src/main/ruby/shell/commands/list_regions.rb @@ -77,6 +77,7 @@ EOF raise "#{cols} must be an array of strings. Possible values are SERVER_NAME, REGION_NAME, START_KEY, END_KEY, SIZE, REQ, LOCALITY." end + error = false admin_instance = admin.instance_variable_get('@admin') conn_instance = admin_instance.getConnection cluster_status = admin_instance.getClusterStatus @@ -105,6 +106,12 @@ EOF region_load_map = cluster_status.getLoad(server_name).getRegionsLoad region_load = region_load_map.get(hregion_info.getRegionName) + if region_load.nil? + puts "Can not find region: #{hregion_info.getRegionName} , it may be disabled or in transition\n" + error = true + break + end + # Ignore regions which exceed our locality threshold next unless accept_region_for_locality? region_load.getDataLocality, locality_threshold result_hash = {} @@ -157,25 +164,27 @@ EOF @end_time = Time.now - size_hash.each do |param, length| - printf(" %#{length}s |", param) - end - printf("\n") - - size_hash.each do |_param, length| - str = '-' * length - printf(" %#{length}s |", str) - end - printf("\n") - - results.each do |result| + if error == false size_hash.each do |param, length| - printf(" %#{length}s |", result[param]) + printf(" %#{length}s |", param) end printf("\n") - end - printf(" %d rows\n", results.size) + size_hash.each do |_param, length| + str = '-' * length + printf(" %#{length}s |", str) + end + printf("\n") + + results.each do |result| + size_hash.each do |param, length| + printf(" %#{length}s |", result[param]) + end + printf("\n") + end + + printf(" %d rows\n", results.size) + end end def valid_locality_threshold?(value) -- 2.10.1