Description
The close_region shell command's help message lists the following usage syntaxes:
hbase> close_region 'REGIONNAME' hbase> close_region 'REGIONNAME', 'SERVER_NAME' hbase> close_region 'ENCODED_REGIONNAME' hbase> close_region 'ENCODED_REGIONNAME', 'SERVER_NAME'
admin.rb's current code (with close_region method being the entry point) is:
def close_region(region_name, server)
if (server == nil || !closeEncodedRegion?(region_name, server))
@admin.closeRegion(region_name, server)
end
end
def closeEncodedRegion?(region_name, server)
@admin.closeRegionWithEncodedRegionName(region_name, server)
end
The close_region 'ENCODED_REGIONNAME' syntax currently will not work because when server = nil the closeEncodedRegion method call is skipped.
The close_region 'REGIONNAME', 'SERVER_NAME' syntax currently will not work because @admin.closeRegionWithEncodedRegionName throws an NotServingRegionException (for the non-encoded region_name) that is uncaught in and prevents execution from returning to close_region and the correct call of HBaseAdmin.closeRegion.