[ 
https://issues.apache.org/jira/browse/HBASE-7495?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13566692#comment-13566692
 ] 

Ted Yu commented on HBASE-7495:
-------------------------------

{code}
+   * A flag that enables StoreFileScanner parallel-seeking in StoreScanner
+   */
+  public static final String STORESCANNER_SEEK_PARALLEL_ENABLED =
+      "hbase.storescanner.seek.parallel.enabled";
{code}
The constant is only used in StoreScanner.java
Please move it there. Maybe name it "hbase.storescanner.parallel.seek.enable"
{code}
+   * seek storefile in parallel to optimize IO latency as much as possible
+   * @throws IOException
+   */
+  private void parallelSeek(final List<? extends KeyValueScanner>
+      scanners, final KeyValue keyValue) throws IOException {
{code}
'seek storefile' -> 'seek storefiles'
Please add javadoc for parameters.
{code}
+      List<Future<Void>> futures = seekExecutor.invokeAll(tasks);
{code}
Why not call seekExecutor.submit(task) in the loop ?
{code}
+    } catch (InterruptedException ie) {
+      LOG.error("");
+      throw new IOException(ie);
{code}
Please use InterruptedIOException. If you don't have custom error log, you can 
omit LOG.error() statement.

                
> parallel seek in StoreScanner
> -----------------------------
>
>                 Key: HBASE-7495
>                 URL: https://issues.apache.org/jira/browse/HBASE-7495
>             Project: HBase
>          Issue Type: Bug
>          Components: Scanners
>    Affects Versions: 0.94.3, 0.96.0
>            Reporter: Liang Xie
>            Assignee: Liang Xie
>         Attachments: HBASE-7495.txt, HBASE-7495.txt, HBASE-7495.txt, 
> HBASE-7495-v2.txt, HBASE-7495-v3.txt, HBASE-7495-v4.txt, HBASE-7495-v4.txt, 
> HBASE-7495-v5.txt
>
>
> seems there's a potential improvable space before doing scanner.next:
> {code:title=StoreScanner.java|borderStyle=solid}
>     if (explicitColumnQuery && lazySeekEnabledGlobally) {
>       for (KeyValueScanner scanner : scanners) {
>         scanner.requestSeek(matcher.getStartKey(), false, true);
>       }
>     } else {
>       for (KeyValueScanner scanner : scanners) {
>         scanner.seek(matcher.getStartKey());
>       }
>     }
> {code} 
> we can do scanner.requestSeek or scanner.seek in parallel, instead of current 
> serialization, to reduce latency for special case.
> Any ideas on it ?  I'll have a try if the comments/suggestions are positive:)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to