@Override
    protected RSRpcServices createRpcServices() throws IOException {
      return new RSRpcServicesWithScanTimeout(this);
    }
If a client's timeout would be exceeded before scan results are ready, there is no point
returning results to the client. Worse, for openScanner calls, the client cannot close the
timed out scanner so this leaks scanners on the server. This test verifies that we properly
track and cleanup scanners when a client timeout is exceeded. This should be more rare when
heartbeats are enabled, since we try to return before timeout there. But it's still possible if
queueing eats up most of the timeout or the inner workings of the scan were slowed down enough
to still exceed the timeout despite the calculated heartbeat deadline.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestScannerTimeoutHandling.java