Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Threaded View
HBase, mail # user - Getting the scan type at preCompact


Copy link to this message
-
Getting the scan type at preCompact
Mesika, Asaf 2013-01-29, 13:23
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