From 4d19fded4f09ad130df27e28b56aa6f12e38e36c Mon Sep 17 00:00:00 2001 From: Michael Stack Date: Mon, 2 Apr 2018 22:20:33 -0700 Subject: [PATCH] HBASE-20236 [locking] Write-time worst offenders --- .../hbase/regionserver/CompactingMemStore.java | 2 +- .../hbase/regionserver/CompactionPipeline.java | 7 +- .../hadoop/hbase/regionserver/DefaultMemStore.java | 5 +- .../apache/hadoop/hbase/regionserver/HRegion.java | 2 +- .../apache/hadoop/hbase/regionserver/HStore.java | 2 +- .../hadoop/hbase/regionserver/MemStoreSize.java | 125 +++++------------- .../hbase/regionserver/MemStoreSizeImpl.java | 139 +++++++++++++++++++++ .../hadoop/hbase/regionserver/MemStoreSizing.java | 64 ++++++---- .../apache/hadoop/hbase/regionserver/Segment.java | 4 +- .../hbase/regionserver/TestCompactingMemStore.java | 5 +- .../regionserver/TestRegionServerAccounting.java | 12 +- 11 files changed, 232 insertions(+), 135 deletions(-) create mode 100644 hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreSizeImpl.java diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactingMemStore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactingMemStore.java index ea4cc0870d..7f2b9bdf6e 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactingMemStore.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactingMemStore.java @@ -233,7 +233,7 @@ public class CompactingMemStore extends AbstractMemStore { } } return snapshotSizing.getDataSize() > 0 ? snapshotSizing - : new MemStoreSize(active.getMemStoreSize()); + : active.getMemStoreSize(); } @Override diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactionPipeline.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactionPipeline.java index 907df72ee1..632d16f9d0 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactionPipeline.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactionPipeline.java @@ -147,7 +147,8 @@ public class CompactionPipeline { } long offHeapSizeDelta = suffixOffHeapSize - newOffHeapSize; long heapSizeDelta = suffixHeapSize - newHeapSize; - region.addMemStoreSize(new MemStoreSize(-dataSizeDelta, -heapSizeDelta, -offHeapSizeDelta)); + region.addMemStoreSize(new MemStoreSizeImpl(-dataSizeDelta, -heapSizeDelta, + -offHeapSizeDelta)); LOG.debug("Suffix data size={}, new segment data size={}, " + "suffix heap size={}," + "new segment heap size={}" + "suffix off heap size={}," + "new segment off heap size={}" @@ -218,8 +219,8 @@ public class CompactionPipeline { if(region != null) { // update the global memstore size counter // upon flattening there is no change in the data size - region.addMemStoreSize(new MemStoreSize(0, newMemstoreAccounting.getHeapSize(), - newMemstoreAccounting.getOffHeapSize())); + region.addMemStoreSize(new MemStoreSizeImpl(0, + newMemstoreAccounting.getHeapSize(), newMemstoreAccounting.getOffHeapSize())); } LOG.debug("Compaction pipeline segment {} flattened", s); return true; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/DefaultMemStore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/DefaultMemStore.java index 9ef6a6cc2b..bbc91d7cc9 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/DefaultMemStore.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/DefaultMemStore.java @@ -105,8 +105,7 @@ public class DefaultMemStore extends AbstractMemStore { @Override public MemStoreSize getFlushableSize() { MemStoreSize snapshotSize = getSnapshotSize(); - return snapshotSize.getDataSize() > 0 ? snapshotSize - : new MemStoreSize(active.getMemStoreSize()); + return snapshotSize.getDataSize() > 0 ? snapshotSize: active.getMemStoreSize(); } @Override @@ -155,7 +154,7 @@ public class DefaultMemStore extends AbstractMemStore { @Override public MemStoreSize size() { - return new MemStoreSize(active.getMemStoreSize()); + return active.getMemStoreSize(); } /** diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java index a87f7bc5ba..ed15d9cf5b 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java @@ -1647,7 +1647,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi this.closed.set(true); if (!canFlush) { - this.decrMemStoreSize(new MemStoreSize(memStoreSize)); + this.decrMemStoreSize(memStoreSize); } else if (memStoreSize.getDataSize() != 0) { LOG.error("Memstore data size is " + memStoreSize.getDataSize()); } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java index 9e89e5e9cc..9494e18dad 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java @@ -2272,7 +2272,7 @@ public class HStore implements Store, HeapSize, StoreConfigInformation, Propagat this.cacheFlushCount = snapshot.getCellsCount(); this.cacheFlushSize = snapshot.getDataSize(); committedFiles = new ArrayList<>(1); - return new MemStoreSize(snapshot.getMemStoreSize()); + return snapshot.getMemStoreSize(); } @Override diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreSize.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreSize.java index 382e6e9069..97be31612d 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreSize.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreSize.java @@ -19,103 +19,44 @@ package org.apache.hadoop.hbase.regionserver; import org.apache.hadoop.hbase.HBaseInterfaceAudience; import org.apache.yetus.audience.InterfaceAudience; - /** * Reports the data size part and total heap space occupied by the MemStore. - * Read-only. + * MemStore size tracks 3 sizes: + *
    + *
  1. data size: the aggregated size of all key-value not including meta data such as + * index, time range etc. + * + *
  2. heap size: the aggregated size of all data that is allocated on-heap including all + * key-values that reside on-heap and the metadata that resides on-heap + *
  3. + *
  4. off-heap size: the aggregated size of all data that is allocated off-heap including all + * key-values that reside off-heap and the metadata that resides off-heap + * + * + * 3 examples to illustrate their usage: + *

    + * Consider a store with 100MB of key-values allocated on-heap and 20MB of metadata allocated + * on-heap. The counters are <100MB, 120MB, 0>, respectively. + *

    + *

    Consider a store with 100MB of key-values allocated off-heap and 20MB of metadata + * allocated on-heap (e.g, CAM index). The counters are <100MB, 20MB, 100MB>, respectively. + *

    + *

    + * Consider a store with 100MB of key-values from which 95MB are allocated off-heap and 5MB + * are allocated on-heap (e.g., due to upserts) and 20MB of metadata from which 15MB allocated + * off-heap (e.g, CCM index) and 5MB allocated on-heap (e.g, CSLM index in active). + * The counters are <100MB, 10MB, 110MB>, respectively. + *

    * @see MemStoreSizing + * @see MemStoreSizeImpl */ @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC) -public class MemStoreSize { - // MemStore size tracks 3 sizes: - // (1) data size: the aggregated size of all key-value not including meta data such as - // index, time range etc. - // (2) heap size: the aggregated size of all data that is allocated on-heap including all - // key-values that reside on-heap and the metadata that resides on-heap - // (3) off-heap size: the aggregated size of all data that is allocated off-heap including all - // key-values that reside off-heap and the metadata that resides off-heap - // - // 3 examples to illustrate their usage: - // Consider a store with 100MB of key-values allocated on-heap and 20MB of metadata allocated - // on-heap. The counters are <100MB, 120MB, 0>, respectively. - // Consider a store with 100MB of key-values allocated off-heap and 20MB of metadata - // allocated on-heap (e.g, CAM index). The counters are <100MB, 20MB, 100MB>, respectively. - // Consider a store with 100MB of key-values from which 95MB are allocated off-heap and 5MB - // are allocated on-heap (e.g., due to upserts) and 20MB of metadata from which 15MB allocated - // off-heap (e.g, CCM index) and 5MB allocated on-heap (e.g, CSLM index in active). - // The counters are <100MB, 10MB, 110MB>, respectively. - - /** - *'dataSize' tracks the Cell's data bytes size alone (Key bytes, value bytes). A cell's data can - * be in on heap or off heap area depending on the MSLAB and its configuration to be using on heap - * or off heap LABs - */ - protected volatile long dataSize; - - /** 'heapSize' tracks all Cell's heap size occupancy. This will include Cell POJO heap overhead. - * When Cells in on heap area, this will include the cells data size as well. - */ - protected volatile long heapSize; - - /** off-heap size: the aggregated size of all data that is allocated off-heap including all - * key-values that reside off-heap and the metadata that resides off-heap - */ - protected volatile long offHeapSize; - - public MemStoreSize() { - this(0L, 0L, 0L); - } - - public MemStoreSize(long dataSize, long heapSize, long offHeapSize) { - this.dataSize = dataSize; - this.heapSize = heapSize; - this.offHeapSize = offHeapSize; - } - - protected MemStoreSize(MemStoreSize memStoreSize) { - this.dataSize = memStoreSize.dataSize; - this.heapSize = memStoreSize.heapSize; - this.offHeapSize = memStoreSize.offHeapSize; - } - public boolean isEmpty() { - return this.dataSize == 0 && this.heapSize == 0 && this.offHeapSize == 0; - } - - public long getDataSize() { - return this.dataSize; - } - - public long getHeapSize() { - return this.heapSize; - } - - public long getOffHeapSize() { - return this.offHeapSize; - } +public interface MemStoreSize { + boolean isEmpty(); - @Override - public boolean equals(Object obj) { - if (obj == null || getClass() != obj.getClass()) { - return false; - } - MemStoreSize other = (MemStoreSize) obj; - return this.dataSize == other.dataSize - && this.heapSize == other.heapSize - && this.offHeapSize == other.offHeapSize; - } + long getDataSize(); - @Override - public int hashCode() { - long h = 13 * this.dataSize; - h = h + 14 * this.heapSize; - h = h + 15 * this.offHeapSize; - return (int) h; - } + long getHeapSize(); - @Override - public String toString() { - return "dataSize=" + this.dataSize - + " , heapSize=" + this.heapSize - + " , offHeapSize=" + this.offHeapSize; - } -} + long getOffHeapSize(); +} \ No newline at end of file diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreSizeImpl.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreSizeImpl.java new file mode 100644 index 0000000000..4bc4bb20a0 --- /dev/null +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreSizeImpl.java @@ -0,0 +1,139 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.hadoop.hbase.regionserver; + +import org.apache.hadoop.hbase.HBaseInterfaceAudience; +import org.apache.yetus.audience.InterfaceAudience; + +/** + * Reports the data size part and total heap space occupied by the MemStore. + * MemStore size tracks 3 sizes: + *
      + *
    1. data size: the aggregated size of all key-value not including meta data such as + * index, time range etc. + * + *
    2. heap size: the aggregated size of all data that is allocated on-heap including all + * key-values that reside on-heap and the metadata that resides on-heap + *
    3. + *
    4. off-heap size: the aggregated size of all data that is allocated off-heap including all + * key-values that reside off-heap and the metadata that resides off-heap + * + * + * 3 examples to illustrate their usage: + *

      + * Consider a store with 100MB of key-values allocated on-heap and 20MB of metadata allocated + * on-heap. The counters are <100MB, 120MB, 0>, respectively. + *

      + *

      Consider a store with 100MB of key-values allocated off-heap and 20MB of metadata + * allocated on-heap (e.g, CAM index). The counters are <100MB, 20MB, 100MB>, respectively. + *

      + *

      + * Consider a store with 100MB of key-values from which 95MB are allocated off-heap and 5MB + * are allocated on-heap (e.g., due to upserts) and 20MB of metadata from which 15MB allocated + * off-heap (e.g, CCM index) and 5MB allocated on-heap (e.g, CSLM index in active). + * The counters are <100MB, 10MB, 110MB>, respectively. + *

      + * @see MemStoreSizing + * @see MemStoreSizeImpl + */ +@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC) +class MemStoreSizeImpl implements MemStoreSize { + /** + *'dataSize' tracks the Cell's data bytes size alone (Key bytes, value bytes). A cell's data can + * be in on heap or off heap area depending on the MSLAB and its configuration to be using on heap + * or off heap LABs + */ + private final long dataSize; + + /** 'heapSize' tracks all Cell's heap size occupancy. This will include Cell POJO heap overhead. + * When Cells in on heap area, this will include the cells data size as well. + */ + private final long heapSize; + + /** off-heap size: the aggregated size of all data that is allocated off-heap including all + * key-values that reside off-heap and the metadata that resides off-heap + */ + private final long offHeapSize; + + /** + * Package private constructor. + */ + MemStoreSizeImpl() { + this(0L, 0L, 0L); + } + + /** + * Package private constructor. + */ + MemStoreSizeImpl(long dataSize, long heapSize, long offHeapSize) { + this.dataSize = dataSize; + this.heapSize = heapSize; + this.offHeapSize = offHeapSize; + } + + /** + * Package private constructor. + */ + MemStoreSizeImpl(MemStoreSize memStoreSize) { + this.dataSize = memStoreSize.getDataSize(); + this.heapSize = memStoreSize.getHeapSize(); + this.offHeapSize = memStoreSize.getOffHeapSize(); + } + + public boolean isEmpty() { + return this.dataSize == 0 && this.heapSize == 0 && this.offHeapSize == 0; + } + + public long getDataSize() { + return this.dataSize; + } + + public long getHeapSize() { + return this.heapSize; + } + + public long getOffHeapSize() { + return this.offHeapSize; + } + + @Override + public boolean equals(Object obj) { + if (obj == null || getClass() != obj.getClass()) { + return false; + } + MemStoreSizeImpl other = (MemStoreSizeImpl) obj; + return this.dataSize == other.dataSize + && this.heapSize == other.heapSize + && this.offHeapSize == other.offHeapSize; + } + + @Override + public int hashCode() { + long h = 13 * this.dataSize; + h = h + 14 * this.heapSize; + h = h + 15 * this.offHeapSize; + return (int) h; + } + + @Override + public String toString() { + return "dataSize=" + this.dataSize + + " , heapSize=" + this.heapSize + + " , offHeapSize=" + this.offHeapSize; + } +} diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreSizing.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreSizing.java index 0b3e925668..f221eb5c30 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreSizing.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreSizing.java @@ -26,9 +26,10 @@ import org.apache.yetus.audience.InterfaceAudience; * @see MemStoreSize */ @InterfaceAudience.Private -public class MemStoreSizing extends MemStoreSize { - public static final MemStoreSizing DUD = new MemStoreSizing() { +public class MemStoreSizing implements MemStoreSize { + private MemStoreSize memStoreSize; + static final MemStoreSizing DUD = new MemStoreSizing() { @Override public void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) { throw new RuntimeException("I'm a dud, you can't use me!"); @@ -40,42 +41,59 @@ public class MemStoreSizing extends MemStoreSize { } }; - public MemStoreSizing() { - super(); + MemStoreSizing() { + this.memStoreSize = new MemStoreSizeImpl(); + } - public MemStoreSizing(long dataSize, long heapSize, long offHeapSize) { - super(dataSize, heapSize, offHeapSize); + MemStoreSizing(long dataSize, long heapSize, long offHeapSize) { + this.memStoreSize = new MemStoreSizeImpl(dataSize, heapSize, offHeapSize); } - public MemStoreSizing(MemStoreSize memStoreSize) { - super(memStoreSize); + MemStoreSizing(MemStoreSize memStoreSize) { + this.memStoreSize = new MemStoreSizeImpl(memStoreSize); } - public void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) { - this.dataSize += dataSizeDelta; - this.heapSize += heapSizeDelta; - this.offHeapSize += offHeapSizeDelta; + synchronized void incMemStoreSize(long dataSizeDelta, long heapSizeDelta, + long offHeapSizeDelta) { + this.memStoreSize = new MemStoreSizeImpl(getDataSize() + dataSizeDelta, + getHeapSize() + heapSizeDelta, getOffHeapSize() + offHeapSizeDelta); } - public void incMemStoreSize(MemStoreSize delta) { - incMemStoreSize(delta.getDataSize(), delta.getHeapSize(), delta.getOffHeapSize()); + synchronized void incMemStoreSize(MemStoreSize delta) { + incMemStoreSize(delta.getDataSize(), delta.getDataSize(), delta.getOffHeapSize()); } - public void decMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta) { - this.dataSize -= dataSizeDelta; - this.heapSize -= heapSizeDelta; - this.offHeapSize -= offHeapSizeDelta; + synchronized void decMemStoreSize(long dataSizeDelta, long heapSizeDelta, + long offHeapSizeDelta) { + incMemStoreSize(-dataSizeDelta, -heapSizeDelta, -offHeapSizeDelta); } - public void decMemStoreSize(MemStoreSize delta) { + synchronized void decMemStoreSize(MemStoreSize delta) { decMemStoreSize(delta.getDataSize(), delta.getHeapSize(), delta.getOffHeapSize()); } - public void empty() { - this.dataSize = 0L; - this.heapSize = 0L; - this.offHeapSize = 0L; + synchronized void empty() { + this.memStoreSize = new MemStoreSizeImpl(); + } + + @Override + public synchronized boolean isEmpty() { + return getHeapSize() == 0 && getDataSize() == 0 && getOffHeapSize() == 0; + } + + @Override + public synchronized long getDataSize() { + return this.memStoreSize.getDataSize(); + } + + @Override + public synchronized long getHeapSize() { + return this.memStoreSize.getHeapSize(); } + @Override + public synchronized long getOffHeapSize() { + return this.memStoreSize.getOffHeapSize(); + } } \ No newline at end of file diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java index 70074bf3b4..188782bc61 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Segment.java @@ -251,9 +251,7 @@ public abstract class Segment { */ //TODO protected void incSize(long delta, long heapOverhead, long offHeapOverhead) { - synchronized (this) { - this.segmentSize.incMemStoreSize(delta, heapOverhead, offHeapOverhead); - } + this.segmentSize.incMemStoreSize(delta, heapOverhead, offHeapOverhead); } public long getMinSequenceId() { diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.java index 5cbfff9644..a7775e3b4d 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.java @@ -838,7 +838,8 @@ public class TestCompactingMemStore extends TestDefaultMemStore { hmc.add(kv, null); LOG.debug("added kv: " + kv.getKeyString() + ", timestamp:" + kv.getTimestamp()); } - regionServicesForStores.addMemStoreSize(new MemStoreSize(hmc.getActive().keySize() - size, + regionServicesForStores.addMemStoreSize(new MemStoreSizeImpl( + hmc.getActive().keySize() - size, hmc.getActive().heapSize() - heapOverhead, 0)); return totalLen; } @@ -859,7 +860,7 @@ public class TestCompactingMemStore extends TestDefaultMemStore { hmc.add(kv, null); LOG.debug("added kv: " + kv.getKeyString() + ", timestamp:" + kv.getTimestamp()); } - regionServicesForStores.addMemStoreSize(new MemStoreSize(hmc.getActive().keySize() - size, + regionServicesForStores.addMemStoreSize(new MemStoreSizeImpl(hmc.getActive().keySize() - size, hmc.getActive().heapSize() - heapOverhead, 0)); return totalLen; } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerAccounting.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerAccounting.java index 7bd9e163a0..9783dd299a 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerAccounting.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerAccounting.java @@ -42,7 +42,7 @@ public class TestRegionServerAccounting { // try for default cases RegionServerAccounting regionServerAccounting = new RegionServerAccounting(conf); MemStoreSize memstoreSize = - new MemStoreSize((3L * 1024L * 1024L * 1024L), (1L * 1024L * 1024L * 1024L), 0); + new MemStoreSizeImpl((3L * 1024L * 1024L * 1024L), (1L * 1024L * 1024L * 1024L), 0); regionServerAccounting.incGlobalMemStoreSize(memstoreSize); assertEquals(FlushType.ABOVE_ONHEAP_HIGHER_MARK, regionServerAccounting.isAboveHighWaterMark()); @@ -55,7 +55,7 @@ public class TestRegionServerAccounting { // try for default cases RegionServerAccounting regionServerAccounting = new RegionServerAccounting(conf); MemStoreSize memstoreSize = - new MemStoreSize((3L * 1024L * 1024L * 1024L), (1L * 1024L * 1024L * 1024L), 0); + new MemStoreSizeImpl((3L * 1024L * 1024L * 1024L), (1L * 1024L * 1024L * 1024L), 0); regionServerAccounting.incGlobalMemStoreSize(memstoreSize); assertEquals(FlushType.ABOVE_ONHEAP_LOWER_MARK, regionServerAccounting.isAboveLowWaterMark()); @@ -70,7 +70,7 @@ public class TestRegionServerAccounting { RegionServerAccounting regionServerAccounting = new RegionServerAccounting(conf); // this will breach offheap limit as data size is higher and not due to heap size MemStoreSize memstoreSize = - new MemStoreSize((3L * 1024L * 1024L * 1024L), 0, (1L * 1024L * 1024L * 1024L)); + new MemStoreSizeImpl((3L * 1024L * 1024L * 1024L), 0, (1L * 1024L * 1024L * 1024L)); regionServerAccounting.incGlobalMemStoreSize(memstoreSize); assertEquals(FlushType.ABOVE_OFFHEAP_HIGHER_MARK, regionServerAccounting.isAboveHighWaterMark()); @@ -86,7 +86,7 @@ public class TestRegionServerAccounting { RegionServerAccounting regionServerAccounting = new RegionServerAccounting(conf); // this will breach higher limit as heap size is higher and not due to offheap size MemStoreSize memstoreSize = - new MemStoreSize((3L * 1024L * 1024L), (2L * 1024L * 1024L * 1024L), 0); + new MemStoreSizeImpl((3L * 1024L * 1024L), (2L * 1024L * 1024L * 1024L), 0); regionServerAccounting.incGlobalMemStoreSize(memstoreSize); assertEquals(FlushType.ABOVE_ONHEAP_HIGHER_MARK, regionServerAccounting.isAboveHighWaterMark()); @@ -101,7 +101,7 @@ public class TestRegionServerAccounting { RegionServerAccounting regionServerAccounting = new RegionServerAccounting(conf); // this will breach offheap limit as data size is higher and not due to heap size MemStoreSize memstoreSize = - new MemStoreSize((3L * 1024L * 1024L * 1024L), 0, (1L * 1024L * 1024L * 1024L)); + new MemStoreSizeImpl((3L * 1024L * 1024L * 1024L), 0, (1L * 1024L * 1024L * 1024L)); regionServerAccounting.incGlobalMemStoreSize(memstoreSize); assertEquals(FlushType.ABOVE_OFFHEAP_LOWER_MARK, regionServerAccounting.isAboveLowWaterMark()); @@ -117,7 +117,7 @@ public class TestRegionServerAccounting { RegionServerAccounting regionServerAccounting = new RegionServerAccounting(conf); // this will breach higher limit as heap size is higher and not due to offheap size MemStoreSize memstoreSize = - new MemStoreSize((3L * 1024L * 1024L), (2L * 1024L * 1024L * 1024L), 0); + new MemStoreSizeImpl((3L * 1024L * 1024L), (2L * 1024L * 1024L * 1024L), 0); regionServerAccounting.incGlobalMemStoreSize(memstoreSize); assertEquals(FlushType.ABOVE_ONHEAP_LOWER_MARK, regionServerAccounting.isAboveLowWaterMark()); -- 2.16.3