Hello Users.
---
HBase version is 1.2.9
---
I wonder this region operation is intended.
I set "hbase.regionserver.optionalcacheflushinterval" slightly shorter than the
default setting.
So cf has old edit, they flush after a random delay.
If the flush queue has a flush request by old edit, a flush request by memstore
size above MEMSTORE_FLUSH config in the same region is ignored.
Because region already has in regionsInQueue.
As a result, memstore size increase until random delay.
I think a flush request by memstore size above MEMSTORE_FLUSH config is a
higher priority than a flush request by old edit.
Here are related codes.
---
@Override
public void requestFlush(Region r, boolean forceFlushAllStores) {
synchronized (regionsInQueue) {
if (!regionsInQueue.containsKey(r)) { // <- Here
FlushRegionEntry fqe = new FlushRegionEntry(r, forceFlushAllStores);
this.regionsInQueue.put(r, fqe);
this.flushQueue.add(fqe);
}
}
}
@Override
public void requestDelayedFlush(Region r, long delay, boolean
forceFlushAllStores) {
synchronized (regionsInQueue) {
if (!regionsInQueue.containsKey(r)) { // <- Here
FlushRegionEntry fqe = new FlushRegionEntry(r, forceFlushAllStores);
fqe.requeue(delay);
this.regionsInQueue.put(r, fqe);
this.flushQueue.add(fqe);
}
}
}
---
Best regards,
Minwoo Kang