In RSRpcServices#closeRegion(), it calls RegionCoprocessorHost#preClose()
first, then calls HRegionServer#closeRegion().
In HRegionServer#closeRegion(), the RegionCoprocessorHost#preClose() is
called again.
I just wonder whether the RegionCoprocessorHost#preClose() call
in RSRpcServices#closeRegion() is unnecessary. Anyone has idea? The code
seems there forever.
I think we should be able to remove the call in RSRpcServices#closeRegion()
and rely on HRegionServer#closeRegion() call for this CP.
{code}
@Override
@QosPriority(priority=HConstants.ADMIN_QOS)
public CloseRegionResponse closeRegion(final RpcController controller,
final CloseRegionRequest request) throws ServiceException {
...
// Can be null if we're calling close on a region that's not online
final Region region = regionServer.getFromOnlineRegions(
encodedRegionName);
if ((region != null) && (region .getCoprocessorHost() != null)) {
region.getCoprocessorHost().preClose(false);
}
...
boolean closed = regionServer.closeRegion(encodedRegionName, false, sn
);
{code}