Ok Ted. I agree it should be available in 0.96. I too was suggesting a work around in my mail similar to what Lars said.
Thanks Ted. Regards Ram On Wed, Jan 30, 2013 at 8:23 AM, Ted Yu <[email protected]> wrote: > I have checked in the following into trunk: > HBASE-7712 Pass ScanType into preCompact() > > Since I didn't find a clean way of introducing ScanType into 0.94 without > requiring recompilation / redeployment of coprocessor jar, the above change > is only in 0.96 > > Cheers > > On Tue, Jan 29, 2013 at 12:33 PM, Ted Yu <[email protected]> wrote: > > > I have logged HBASE-7712 > > > > Patch coming soon. > > > > > > On Tue, Jan 29, 2013 at 11:58 AM, lars hofhansl <[email protected]> > wrote: > > > >> Oh yeah, wasn't disagreeing with that, just that until we have a patch > >> there's a workaround. > >> > >> ------------------------------ > >> *From:* Ted Yu <[email protected]> > >> *To:* [email protected]; lars hofhansl <[email protected]> > >> *Sent:* Tuesday, January 29, 2013 11:29 AM > >> *Subject:* Re: Getting the scan type at preCompact > >> > >> Since preCompact() is given the scanner returned > >> from preCompactScannerOpen(), I think for users it is more convenient to > >> wrap this scanner in preCompact(). > >> > >> Cheers > >> > >> On Tue, Jan 29, 2013 at 10:55 AM, lars hofhansl <[email protected]> > wrote: > >> > >> 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" <[email protected]> > >> To: [email protected] > >> 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 > >> > >> > >> > >> > >> > > >
