Home | About | Sematext search-lucene.com search-hadoop.com
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB
 Search Hadoop and all its subprojects:

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


Copy link to this message
-
Re: Getting the scan type at preCompact
You can do the same with preCompactScannerOpen() hook right.
If the scanType is minor send a wrapped internalScanner say
MinorCompactionScanner.

If the scanType is major send a wrapped interanlScanner say
MajorCompactionScanner.

Does that solve your purpose? Because if preCompactScannerOpen returns a
scanner only that will  be used inside preCompact also.

Regards
Ram

On Tue, Jan 29, 2013 at 6:53 PM, Mesika, Asaf <[EMAIL PROTECTED]> wrote:

> 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
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB