Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 37 additions & 21 deletions hbase-shell/src/main/ruby/shell/commands/list_regions.rb
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,6 @@ def command(table_name, options = nil, cols = nil)
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 = org.apache.hadoop.hbase.ClusterStatus.new(admin_instance.getClusterMetrics)
Expand All @@ -105,17 +104,24 @@ def command(table_name, options = nil, cols = nil)
regions.each do |hregion|
hregion_info = hregion.getRegion
server_name = hregion.getServerName
region_load_map = cluster_status.getLoad(server_name).getRegionsLoad
server_load = cluster_status.getLoad(server_name)
if server_load.nil?
region_load_map = java.util.HashMap.new
else
region_load_map = server_load.getRegionsLoad
end
region_name = hregion_info.getRegionNameAsString
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
puts "Can not find all details for region: " \
"#{region_name.strip} ," \
" it may be disabled or in transition\n"
else
# Ignore regions which exceed our locality threshold
next unless accept_region_for_locality? region_load.getDataLocality,
locality_threshold
end

# Ignore regions which exceed our locality threshold
next unless accept_region_for_locality? region_load.getDataLocality, locality_threshold
result_hash = {}

if size_hash.key?('SERVER_NAME')
Expand All @@ -124,36 +130,48 @@ def command(table_name, options = nil, cols = nil)
end

if size_hash.key?('REGION_NAME')
result_hash.store('REGION_NAME', hregion_info.getRegionNameAsString.strip)
size_hash['REGION_NAME'] = [size_hash['REGION_NAME'], hregion_info.getRegionNameAsString.length].max
result_hash.store('REGION_NAME', region_name.strip)
size_hash['REGION_NAME'] = [size_hash['REGION_NAME'], region_name.length].max
end

if size_hash.key?('START_KEY')
startKey = Bytes.toStringBinary(hregion_info.getStartKey).strip
result_hash.store('START_KEY', startKey)
size_hash['START_KEY'] = [size_hash['START_KEY'], startKey.length].max
start_key = Bytes.toStringBinary(hregion_info.getStartKey).strip
result_hash.store('START_KEY', start_key)
size_hash['START_KEY'] = [size_hash['START_KEY'], start_key.length].max
end

if size_hash.key?('END_KEY')
endKey = Bytes.toStringBinary(hregion_info.getEndKey).strip
result_hash.store('END_KEY', endKey)
size_hash['END_KEY'] = [size_hash['END_KEY'], endKey.length].max
end_key = Bytes.toStringBinary(hregion_info.getEndKey).strip
result_hash.store('END_KEY', end_key)
size_hash['END_KEY'] = [size_hash['END_KEY'], end_key.length].max
end

if size_hash.key?('SIZE')
region_store_file_size = region_load.getStorefileSizeMB.to_s.strip
if region_load.nil?
region_store_file_size = ''
else
region_store_file_size = region_load.getStorefileSizeMB.to_s.strip
end
result_hash.store('SIZE', region_store_file_size)
size_hash['SIZE'] = [size_hash['SIZE'], region_store_file_size.length].max
end

if size_hash.key?('REQ')
region_requests = region_load.getRequestsCount.to_s.strip
if region_load.nil?
region_requests = ''
else
region_requests = region_load.getRequestsCount.to_s.strip
end
result_hash.store('REQ', region_requests)
size_hash['REQ'] = [size_hash['REQ'], region_requests.length].max
end

if size_hash.key?('LOCALITY')
locality = region_load.getDataLocality.to_s.strip
if region_load.nil?
locality = ''
else
locality = region_load.getDataLocality.to_s.strip
end
result_hash.store('LOCALITY', locality)
size_hash['LOCALITY'] = [size_hash['LOCALITY'], locality.length].max
end
Expand All @@ -166,8 +184,6 @@ def command(table_name, options = nil, cols = nil)

@end_time = Time.now

return if error

size_hash.each do |param, length|
printf(" %#{length}s |", param)
end
Expand Down