[
https://issues.apache.org/jira/browse/HBASE-13690?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14544519#comment-14544519
]
Andrew Purtell commented on HBASE-13690:
----------------------------------------
Even so, we did start caching Configuration between Table instances because it
was a non-negligible cost when using Connection#getTable. Looks like we should
do the same for scanners.
> Client Scanner Initialization Reformats strings every time
> ----------------------------------------------------------
>
> Key: HBASE-13690
> URL: https://issues.apache.org/jira/browse/HBASE-13690
> Project: HBase
> Issue Type: Improvement
> Reporter: John Leach
> Priority: Critical
> Attachments: ClientScanner_String_Format.tiff
>
>
> The client scanner continually goes back into the conf for values...
> public ClientScanner(final Configuration conf, final Scan scan, final
> TableName tableName,
> HConnection connection, RpcRetryingCallerFactory rpcFactory,
> RpcControllerFactory controllerFactory) throws IOException {
> if (LOG.isTraceEnabled()) {
> LOG.trace("Scan table=" + tableName
> + ", startRow=" + Bytes.toStringBinary(scan.getStartRow()));
> }
> this.scan = scan;
> this.tableName = tableName;
> this.lastNext = System.currentTimeMillis();
> this.connection = connection;
> if (scan.getMaxResultSize() > 0) {
> this.maxScannerResultSize = scan.getMaxResultSize();
> } else {
> this.maxScannerResultSize = conf.getLong(
> HConstants.HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE_KEY,
> HConstants.DEFAULT_HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE);
> }
> this.scannerTimeout = HBaseConfiguration.getInt(conf,
> HConstants.HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD,
> HConstants.HBASE_REGIONSERVER_LEASE_PERIOD_KEY,
> HConstants.DEFAULT_HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD);
> // check if application wants to collect scan metrics
> initScanMetrics(scan);
> // Use the caching from the Scan. If not set, use the default cache
> setting for this table.
> if (this.scan.getCaching() > 0) {
> this.caching = this.scan.getCaching();
> } else {
> this.caching = conf.getInt(
> HConstants.HBASE_CLIENT_SCANNER_CACHING,
> HConstants.DEFAULT_HBASE_CLIENT_SCANNER_CACHING);
> }
> this.caller = rpcFactory.<Result[]> newCaller();
> this.rpcControllerFactory = controllerFactory;
> initializeScannerInConstruction();
> }
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)