HBASE-19844 Shell should support to flush by regionserver
Signed-off-by: tedyu <yuzhihong@gmail.com>
This commit is contained in:
parent
ba402b1e7b
commit
8e8e1e5a1b
|
@ -50,12 +50,17 @@ module Hbase
|
||||||
end
|
end
|
||||||
|
|
||||||
#----------------------------------------------------------------------------------------------
|
#----------------------------------------------------------------------------------------------
|
||||||
# Requests a table or region flush
|
# Requests a table or region or region server flush
|
||||||
def flush(table_or_region_name)
|
def flush(name)
|
||||||
@admin.flushRegion(table_or_region_name.to_java_bytes)
|
@admin.flushRegion(name.to_java_bytes)
|
||||||
rescue java.lang.IllegalArgumentException => e
|
rescue java.lang.IllegalArgumentException
|
||||||
# Unknown region. Try table.
|
# Unknown region. Try table.
|
||||||
@admin.flush(TableName.valueOf(table_or_region_name))
|
begin
|
||||||
|
@admin.flush(TableName.valueOf(name))
|
||||||
|
rescue java.lang.IllegalArgumentException
|
||||||
|
# Unknown table. Try region server.
|
||||||
|
@admin.flushRegionServer(ServerName.valueOf(name))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
#----------------------------------------------------------------------------------------------
|
#----------------------------------------------------------------------------------------------
|
||||||
|
@ -1286,5 +1291,11 @@ module Hbase
|
||||||
end
|
end
|
||||||
@admin.clearDeadServers(servers).to_a
|
@admin.clearDeadServers(servers).to_a
|
||||||
end
|
end
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------------------------
|
||||||
|
# List live region servers
|
||||||
|
def list_liveservers
|
||||||
|
@admin.getClusterStatus.getServers.to_a
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -23,11 +23,14 @@ module Shell
|
||||||
def help
|
def help
|
||||||
<<-EOF
|
<<-EOF
|
||||||
Flush all regions in passed table or pass a region row to
|
Flush all regions in passed table or pass a region row to
|
||||||
flush an individual region. For example:
|
flush an individual region or a region server name whose format
|
||||||
|
is 'host,port,startcode', to flush all its regions.
|
||||||
|
For example:
|
||||||
|
|
||||||
hbase> flush 'TABLENAME'
|
hbase> flush 'TABLENAME'
|
||||||
hbase> flush 'REGIONNAME'
|
hbase> flush 'REGIONNAME'
|
||||||
hbase> flush 'ENCODED_REGIONNAME'
|
hbase> flush 'ENCODED_REGIONNAME'
|
||||||
|
hbase> flush 'REGION_SERVER_NAME'
|
||||||
EOF
|
EOF
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -101,6 +101,10 @@ module Hbase
|
||||||
|
|
||||||
define_test "flush should work" do
|
define_test "flush should work" do
|
||||||
command(:flush, 'hbase:meta')
|
command(:flush, 'hbase:meta')
|
||||||
|
servers = admin.list_liveservers
|
||||||
|
servers.each do |s|
|
||||||
|
command(:flush, s.toString)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue