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}

Reply via email to