hbase-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kang Minwoo <minwoo.k...@outlook.com>
Subject Region flush delayed even memstore size above MEMSTORE_FLUSH config.
Date Mon, 11 Mar 2019 04:22:13 GMT
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
Mime
View raw message