private void renewLease() { incRPCCallsMetrics(scanMetrics, regionServerRemote); nextCallSeq++; resetController(controller, rpcTimeoutNs); ScanRequest req = RequestConverter.buildScanRequest(scannerId, 0, false, nextCallSeq, false, true, -1); stub.scan(controller, req, resp -> { }); }
private CompletableFuture<OpenScannerResponse> callOpenScanner(HBaseRpcController controller, HRegionLocation loc, ClientService.Interface stub) { boolean isRegionServerRemote = isRemote(loc.getHostname()); incRPCCallsMetrics(scanMetrics, isRegionServerRemote); if (openScannerTries.getAndIncrement() > 1) { incRPCRetriesMetrics(scanMetrics, isRegionServerRemote); } CompletableFuture<OpenScannerResponse> future = new CompletableFuture<>(); try { ScanRequest request = RequestConverter.buildScanRequest(loc.getRegion().getRegionName(), scan, scan.getCaching(), false); stub.scan(controller, request, resp -> { if (controller.failed()) { future.completeExceptionally(controller.getFailed()); return; } future.complete(new OpenScannerResponse(loc, isRegionServerRemote, stub, controller, resp)); }); } catch (IOException e) { future.completeExceptionally(e); } return future; }
private void closeScanner() { incRPCCallsMetrics(scanMetrics, regionServerRemote); resetController(controller, rpcTimeoutNs); ScanRequest req = RequestConverter.buildScanRequest(this.scannerId, 0, true, false); stub.scan(controller, req, resp -> { if (controller.failed()) { LOG.warn("Call to " + loc.getServerName() + " for closing scanner id = " + scannerId + " for " + loc.getRegion().getEncodedName() + " of " + loc.getRegion().getTable() + " failed, ignore, probably already closed", controller.getFailed()); } }); }
private void call() { // As we have a call sequence for scan, it is useless to have a different rpc timeout which is // less than the scan timeout. If the server does not respond in time(usually this will not // happen as we have heartbeat now), we will get an OutOfOrderScannerNextException when // resending the next request and the only way to fix this is to close the scanner and open a // new one. long callTimeoutNs; if (scanTimeoutNs > 0) { long remainingNs = scanTimeoutNs - (System.nanoTime() - nextCallStartNs); if (remainingNs <= 0) { completeExceptionally(true); return; } callTimeoutNs = remainingNs; } else { callTimeoutNs = 0L; } incRPCCallsMetrics(scanMetrics, regionServerRemote); if (tries > 1) { incRPCRetriesMetrics(scanMetrics, regionServerRemote); } resetController(controller, callTimeoutNs); ScanRequest req = RequestConverter.buildScanRequest(scannerId, scan.getCaching(), false, nextCallSeq, false, false, scan.getLimit()); stub.scan(controller, req, resp -> onComplete(controller, resp)); }
private void close() { if (this.scannerId == -1L) { return; } try { incRPCCallsMetrics(scanMetrics, isRegionServerRemote); ScanRequest request = RequestConverter.buildScanRequest(this.scannerId, 0, true, this.scanMetrics != null); try { getStub().scan(getRpcController(), request); } catch (Exception e) { throw ProtobufUtil.handleRemoteException(e); } } catch (IOException e) { TableName table = getTableName(); String tableDetails = (table == null) ? "" : (" on table: " + table.getNameAsString()); LOG.warn("Ignore, probably already closed. Current scan: " + getScan().toString() + tableDetails, e); } this.scannerId = -1L; }
private ScanResponse next() throws IOException { incRPCCallsMetrics(scanMetrics, isRegionServerRemote); ScanRequest request = RequestConverter.buildScanRequest(scannerId, caching, false, nextCallSeq, this.scanMetrics != null, renew, scan.getLimit());
private ScanResponse openScanner() throws IOException { incRPCCallsMetrics(scanMetrics, isRegionServerRemote); ScanRequest request = RequestConverter.buildScanRequest( getLocation().getRegionInfo().getRegionName(), this.scan, this.caching, false); try { ScanResponse response = getStub().scan(getRpcController(), request); long id = response.getScannerId(); if (logScannerActivity) { LOG.info("Open scanner=" + id + " for scan=" + scan.toString() + " on region " + getLocation().toString()); } if (response.hasMvccReadPoint()) { this.scan.setMvccReadPoint(response.getMvccReadPoint()); } this.scannerId = id; return response; } catch (Exception e) { throw ProtobufUtil.handleRemoteException(e); } }
private void renewLease() { incRPCCallsMetrics(scanMetrics, regionServerRemote); nextCallSeq++; resetController(controller, rpcTimeoutNs); ScanRequest req = RequestConverter.buildScanRequest(scannerId, 0, false, nextCallSeq, false, true, -1); stub.scan(controller, req, resp -> { }); }
private CompletableFuture<OpenScannerResponse> callOpenScanner(HBaseRpcController controller, HRegionLocation loc, ClientService.Interface stub) { boolean isRegionServerRemote = isRemote(loc.getHostname()); incRPCCallsMetrics(scanMetrics, isRegionServerRemote); if (openScannerTries > 1) { incRPCRetriesMetrics(scanMetrics, isRegionServerRemote); } openScannerTries++; CompletableFuture<OpenScannerResponse> future = new CompletableFuture<>(); try { ScanRequest request = RequestConverter.buildScanRequest(loc.getRegionInfo().getRegionName(), scan, scan.getCaching(), false); stub.scan(controller, request, resp -> { if (controller.failed()) { future.completeExceptionally(controller.getFailed()); return; } future.complete(new OpenScannerResponse(loc, isRegionServerRemote, stub, controller, resp)); }); } catch (IOException e) { future.completeExceptionally(e); } return future; }
private void closeScanner() { incRPCCallsMetrics(scanMetrics, regionServerRemote); resetController(controller, rpcTimeoutNs); ScanRequest req = RequestConverter.buildScanRequest(this.scannerId, 0, true, false); stub.scan(controller, req, resp -> { if (controller.failed()) { LOG.warn("Call to " + loc.getServerName() + " for closing scanner id = " + scannerId + " for " + loc.getRegion().getEncodedName() + " of " + loc.getRegion().getTable() + " failed, ignore, probably already closed", controller.getFailed()); } }); }
private void call() { // As we have a call sequence for scan, it is useless to have a different rpc timeout which is // less than the scan timeout. If the server does not respond in time(usually this will not // happen as we have heartbeat now), we will get an OutOfOrderScannerNextException when // resending the next request and the only way to fix this is to close the scanner and open a // new one. long callTimeoutNs; if (scanTimeoutNs > 0) { long remainingNs = scanTimeoutNs - (System.nanoTime() - nextCallStartNs); if (remainingNs <= 0) { completeExceptionally(true); return; } callTimeoutNs = remainingNs; } else { callTimeoutNs = 0L; } incRPCCallsMetrics(scanMetrics, regionServerRemote); if (tries > 1) { incRPCRetriesMetrics(scanMetrics, regionServerRemote); } resetController(controller, callTimeoutNs); ScanRequest req = RequestConverter.buildScanRequest(scannerId, scan.getCaching(), false, nextCallSeq, false, false, scan.getLimit()); stub.scan(controller, req, resp -> onComplete(controller, resp)); }
private void close() { if (this.scannerId == -1L) { return; } try { incRPCCallsMetrics(scanMetrics, isRegionServerRemote); ScanRequest request = RequestConverter.buildScanRequest(this.scannerId, 0, true, this.scanMetrics != null); try { getStub().scan(getRpcController(), request); } catch (Exception e) { throw ProtobufUtil.handleRemoteException(e); } } catch (IOException e) { TableName table = getTableName(); String tableDetails = (table == null) ? "" : (" on table: " + table.getNameAsString()); LOG.warn("Ignore, probably already closed. Current scan: " + getScan().toString() + tableDetails, e); } this.scannerId = -1L; }
private ScanResponse next() throws IOException { incRPCCallsMetrics(scanMetrics, isRegionServerRemote); ScanRequest request = RequestConverter.buildScanRequest(scannerId, caching, false, nextCallSeq, this.scanMetrics != null, renew, scan.getLimit());
private ScanResponse openScanner() throws IOException { incRPCCallsMetrics(scanMetrics, isRegionServerRemote); ScanRequest request = RequestConverter.buildScanRequest( getLocation().getRegionInfo().getRegionName(), this.scan, this.caching, false); try { ScanResponse response = getStub().scan(getRpcController(), request); long id = response.getScannerId(); if (logScannerActivity) { LOG.info("Open scanner=" + id + " for scan=" + scan.toString() + " on region " + getLocation().toString()); } if (response.hasMvccReadPoint()) { this.scan.setMvccReadPoint(response.getMvccReadPoint()); } this.scannerId = id; return response; } catch (Exception e) { throw ProtobufUtil.handleRemoteException(e); } }
private void renewLease() { incRPCCallsMetrics(scanMetrics, regionServerRemote); nextCallSeq++; resetController(controller, rpcTimeoutNs); ScanRequest req = RequestConverter.buildScanRequest(scannerId, 0, false, nextCallSeq, false, true, -1); stub.scan(controller, req, resp -> { }); }
private CompletableFuture<OpenScannerResponse> callOpenScanner(HBaseRpcController controller, HRegionLocation loc, ClientService.Interface stub) { boolean isRegionServerRemote = isRemote(loc.getHostname()); incRPCCallsMetrics(scanMetrics, isRegionServerRemote); if (openScannerTries > 1) { incRPCRetriesMetrics(scanMetrics, isRegionServerRemote); } openScannerTries++; CompletableFuture<OpenScannerResponse> future = new CompletableFuture<>(); try { ScanRequest request = RequestConverter.buildScanRequest(loc.getRegionInfo().getRegionName(), scan, scan.getCaching(), false); stub.scan(controller, request, resp -> { if (controller.failed()) { future.completeExceptionally(controller.getFailed()); return; } future.complete(new OpenScannerResponse(loc, isRegionServerRemote, stub, controller, resp)); }); } catch (IOException e) { future.completeExceptionally(e); } return future; }
private void closeScanner() { incRPCCallsMetrics(scanMetrics, regionServerRemote); resetController(controller, rpcTimeoutNs); ScanRequest req = RequestConverter.buildScanRequest(this.scannerId, 0, true, false); stub.scan(controller, req, resp -> { if (controller.failed()) { LOG.warn("Call to " + loc.getServerName() + " for closing scanner id = " + scannerId + " for " + loc.getRegion().getEncodedName() + " of " + loc.getRegion().getTable() + " failed, ignore, probably already closed", controller.getFailed()); } }); }
private void call() { // As we have a call sequence for scan, it is useless to have a different rpc timeout which is // less than the scan timeout. If the server does not respond in time(usually this will not // happen as we have heartbeat now), we will get an OutOfOrderScannerNextException when // resending the next request and the only way to fix this is to close the scanner and open a // new one. long callTimeoutNs; if (scanTimeoutNs > 0) { long remainingNs = scanTimeoutNs - (System.nanoTime() - nextCallStartNs); if (remainingNs <= 0) { completeExceptionally(true); return; } callTimeoutNs = remainingNs; } else { callTimeoutNs = 0L; } incRPCCallsMetrics(scanMetrics, regionServerRemote); if (tries > 1) { incRPCRetriesMetrics(scanMetrics, regionServerRemote); } resetController(controller, callTimeoutNs); ScanRequest req = RequestConverter.buildScanRequest(scannerId, scan.getCaching(), false, nextCallSeq, false, false, scan.getLimit()); stub.scan(controller, req, resp -> onComplete(controller, resp)); }
private void close() { if (this.scannerId == -1L) { return; } try { incRPCCallsMetrics(scanMetrics, isRegionServerRemote); ScanRequest request = RequestConverter.buildScanRequest(this.scannerId, 0, true, this.scanMetrics != null); try { getStub().scan(getRpcController(), request); } catch (Exception e) { throw ProtobufUtil.handleRemoteException(e); } } catch (IOException e) { TableName table = getTableName(); String tableDetails = (table == null) ? "" : (" on table: " + table.getNameAsString()); LOG.warn("Ignore, probably already closed. Current scan: " + getScan().toString() + tableDetails, e); } this.scannerId = -1L; }
private ScanResponse openScanner() throws IOException { incRPCCallsMetrics(scanMetrics, isRegionServerRemote); ScanRequest request = RequestConverter.buildScanRequest( getLocation().getRegionInfo().getRegionName(), this.scan, this.caching, false); try { ScanResponse response = getStub().scan(getRpcController(), request); long id = response.getScannerId(); if (logScannerActivity) { LOG.info("Open scanner=" + id + " for scan=" + scan.toString() + " on region " + getLocation().toString()); } if (response.hasMvccReadPoint()) { this.scan.setMvccReadPoint(response.getMvccReadPoint()); } this.scannerId = id; return response; } catch (Exception e) { throw ProtobufUtil.handleRemoteException(e); } }