hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jesse Yates (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-8355) BaseRegionObserver#preCompactScannerOpen returns null
Date Fri, 03 May 2013 23:20:15 GMT

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

Jesse Yates commented on HBASE-8355:

Looking at this more, I think Lar's comment doesn't apply:
I don't think this is right. The internal scanner passed is not the right scanner to use.
I am surprised that this does not break many more tests.

In Compactor.compact the result of preCompactScannerOpen need to be null in order to have
the default action happening.

The code that call this is:
  public InternalScanner preCompactScannerOpen(Store store, List<StoreFileScanner> scanners,
      ScanType scanType, long earliestPutTs, CompactionRequest request) throws IOException
    ObserverContext<RegionCoprocessorEnvironment> ctx = null;
    InternalScanner s = null;
    for (RegionEnvironment env: coprocessors) {
      if (env.getInstance() instanceof RegionObserver) {
        ctx = ObserverContext.createAndPrepare(env, ctx);
        try {
          s = ((RegionObserver) env.getInstance()).preCompactScannerOpen(ctx, store, scanners,
            scanType, earliestPutTs, s, request);
        } catch (Throwable e) {
        if (ctx.shouldComplete()) {
    return s;

Which starts by passing in null as the InternalScanner and pulls an internal scanner back
out. So returning the passed InternalScanner - s - should be the correct default. 

So back to +1 for Andy's original, unless I'm missing something?

This led to two other things (that shouldn't necessarily be tackled here):
1. This same logic is present in preFlushScannerOpen and preCompactScanner open, with the
same consequences
2. There is no easy solution for nested CPs creating new scanners - creating a brand new scanner
will ignore any previous and setting Context#complete will ignore later CPs. I'm working on
a first cut solution and will open a new jira (or at least blog about it :) when I figure
out what it looks like... unless someone has a suggestions?
> BaseRegionObserver#preCompactScannerOpen returns null
> -----------------------------------------------------
>                 Key: HBASE-8355
>                 URL: https://issues.apache.org/jira/browse/HBASE-8355
>             Project: HBase
>          Issue Type: Bug
>          Components: Coprocessors
>    Affects Versions: 0.98.0, 0.94.8, 0.95.1
>            Reporter: Andrew Purtell
>            Assignee: Andrew Purtell
>         Attachments: 8355-0.94.patch, 8355.patch
> As pointed out in https://github.com/forcedotcom/phoenix/pull/131, BaseRegionObserver#preCompactScannerOpen
returns null by default, which hoses any coprocessors down the line, making override of this
method mandatory. The fix is trivial, patch coming momentarily.

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

View raw message