hbase-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From lars hofhansl <la...@apache.org>
Subject Re: Getting the scan type at preCompact
Date Tue, 29 Jan 2013 18:55:42 GMT
I added the preCompactScannerOpen() to RegionObserver and didn't go back and also changes preCompact.
In lieu of a fix you could create the scanner in preCompactScannerOpen() (take a look at Compactor.compact()
to see how the scanner would be created).

-- Lars



________________________________
 From: "Mesika, Asaf" <asaf.mesika@gmail.com>
To: user@hbase.apache.org 
Sent: Tuesday, January 29, 2013 5:23 AM
Subject: Getting the scan type at preCompact
 
Hi,

In the RegionObserver.preCompactScannerOpen() method, one of the parameters is scanType which
enables me to know if the compaction is major or minor.
In the preCompact() method I don't have that parameter.

In a region observer I wrote, I'm basically wrapping the InternalScanner with my own Scanner.

My scanner should behave differently when its a a major or minor compaction.

Due to this restriction I'm forced to use preCompactScannerOpen() and create the StoreScanner,
copy pasting the code that creates it in Store.compactStore() (marked in green):

        if (getHRegion().getCoprocessorHost() != null) {
          scanner = getHRegion()
              .getCoprocessorHost()
              .preCompactScannerOpen(this, scanners,
                  majorCompaction ? ScanType.MAJOR_COMPACT : ScanType.MINOR_COMPACT,
earliestPutTs);
        }
        if (scanner == null) {
          Scan scan = new Scan();
          scan.setMaxVersions(getFamily().getMaxVersions());
          /* Include deletes, unless we are doing a major compaction */
          scanner = new StoreScanner(this, getScanInfo(), scan, scanners,
            majorCompaction? ScanType.MAJOR_COMPACT : ScanType.MINOR_COMPACT,
            smallestReadPoint, earliestPutTs);
        }
        if (getHRegion().getCoprocessorHost() != null) {
          InternalScanner cpScanner =
            getHRegion().getCoprocessorHost().preCompact(this, scanner);
          // NULL scanner returned from coprocessor hooks means skip normal processing
          if (cpScanner == null) {
            return null;
          }
          scanner = cpScanner;
        }


Can I file a JIRA to add the Scan Type to the preCompact method?

Thanks,

Asaf
Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message