the call to compactionRequested() only puts the region on a queue to be compacted, so if there is unintended duplication, it wont actually hold anything up.
-ryan On Tue, Jan 25, 2011 at 6:05 PM, mac fang <mac.had...@gmail.com> wrote: > Guys, since the flushCache will make the write/read suspend. I am NOT sure > if it is necessary here. > > On Mon, Jan 24, 2011 at 1:48 PM, mac fang <mac.had...@gmail.com> wrote: > >> Yes, I mean the server.compactSplitThread.compactionRequested(region, >> getName()); >> >> in flushRegion, it will do the >> server.compactSplitThread.compactionRequested(region, >> getName()); >> >> *seems we don't need to do it again in the following logic (can you guys >> see the lines in bold, **!flushRegion(biggestMemStoreRegion, true) and * >> * >> * >> * for (HRegion region : regionsToCompact) { >> server.compactSplitThread.compactionRequested(region, getName()); >> }* >> * >> * >> * >> * >> *regards* >> macf >> >> >> if (*!flushRegion(biggestMemStoreRegion, true)*) { >> LOG.warn("Flush failed"); >> break; >> } >> regionsToCompact.add(biggestMemStoreRegion); >> } >> for (HRegion region : regionsToCompact) { >> *server.compactSplitThread.compactionRequested(region, getName());* >> } >> >> > > in flushRegion >> > > >> > > private boolean flushRegion(final HRegion region, final boolean >> > > emergencyFlush) { >> > > synchronized (this.regionsInQueue) { >> > > FlushQueueEntry fqe = this.regionsInQueue.remove(region); >> > > if (fqe != null && emergencyFlush) { >> > > // Need to remove from region from delay queue. When NOT an >> > > // emergencyFlush, then item was removed via a flushQueue.poll. >> > > flushQueue.remove(fqe); >> > > } >> > > lock.lock(); >> > > } >> > > try { >> > > if (region.flushcache()) { >> > > *server.compactSplitThread.compactionRequested(region, >> getName());* >> > > } >> >> On Mon, Jan 24, 2011 at 6:40 AM, Ted Yu <yuzhih...@gmail.com> wrote: >> >>> I think he was referring to this line: >>> >>> server.compactSplitThread.compactionRequested(region, getName()); >>> >>> On Sun, Jan 23, 2011 at 10:52 AM, Stack <st...@duboce.net> wrote: >>> >>> > Hello Mac Fang: Which lines in the below? Your colorizing didn't >>> > come across in the mail. Thanks, St.Ack >>> > >>> > On Sun, Jan 23, 2011 at 6:23 AM, mac fang <mac.had...@gmail.com> wrote: >>> > > Hi, guys, >>> > > >>> > > see the below codes in* MemStoreFlusher.java*, i am not sure if those >>> > lines >>> > > in orange are the same and looks like they are trying to do the same >>> > logic. >>> > > Are they redundant? >>> > > >>> > > regards >>> > > macf >>> > > >>> > > if (!flushRegion(biggestMemStoreRegion, true)) { >>> > > LOG.warn("Flush failed"); >>> > > break; >>> > > } >>> > > regionsToCompact.add(biggestMemStoreRegion); >>> > > } >>> > > for (HRegion region : regionsToCompact) { >>> > > server.compactSplitThread.compactionRequested(region, getName()); >>> > > } >>> > > >>> > > in flushRegion >>> > > >>> > > private boolean flushRegion(final HRegion region, final boolean >>> > > emergencyFlush) { >>> > > synchronized (this.regionsInQueue) { >>> > > FlushQueueEntry fqe = this.regionsInQueue.remove(region); >>> > > if (fqe != null && emergencyFlush) { >>> > > // Need to remove from region from delay queue. When NOT an >>> > > // emergencyFlush, then item was removed via a flushQueue.poll. >>> > > flushQueue.remove(fqe); >>> > > } >>> > > lock.lock(); >>> > > } >>> > > try { >>> > > if (region.flushcache()) { >>> > > server.compactSplitThread.compactionRequested(region, >>> getName()); >>> > > } >>> > > >>> > >>> >> >> >