Thanks Ted.

We are using 0.90.1 now.

It's good news that new 0.90.3 and trunk resolved this issue.



On Wed, Jun 1, 2011 at 1:35 AM, Ted Yu <[email protected]> wrote:

> Which version of HBase are you using ?
> In 0.90.3, I see this in Store.compact():
>    boolean forceSplit = this.region.shouldForceSplit();
> For trunk, the code has been rewritten.
>
> Cheers
>
> On Mon, May 30, 2011 at 11:27 PM, Schubert Zhang <[email protected]>
> wrote:
>
> > We found a issue of forceSplit.
> >
> > 1. My schema:
> >    We have a table with multiple column families: A, B, C, D
> >    After put many data, but there may be no data (no storeFile) for some
> > stores.
> >    for example: store A and B is empty, but C and D have many data now.
> >
> > 2. Then I request a split from hbase shell or the web GUI, but nothing
> > happend.
> >
> > 3. Then we check the code, it may be a bug for multiple CFs.
> >    (1) split request.
> >         RegionServer:   region.shouldSplit(true)
> >         and enqueue this request
> >    (2) HRegion.compactStores(false)
> >         for (Store store: stores.values()) {
> >            final Store.StoreSize ss = store.compact(majorCompaction);
> >            lastCompactSize += store.getLastCompactSize();
> >            if (ss != null && ss.getSize() > maxSize) {
> >              maxSize = ss.getSize();
> >              splitRow = ss.getSplitRow();
> >            }
> >          }
> >         but, for store A and store B, store.compact(false) returns null.
> >     (3) Store.compact(false)
> >          boolean forceSplit = this.region.shouldSplit(false);
> >          for the first store A and second store B, it set
> > this.splitRequest=false. This is a bug.
> >     (4) Then even for store C and D which have many data, forceSplit is
> > always false.
> >
> >
> > btw: seems the current code of compaction/spliting is so disordered and
> > confused.
> >
> > Schubert
> >
>

Reply via email to