You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zh...@apache.org on 2021/11/12 14:52:44 UTC
[hbase] branch master updated: HBASE-26438 Fix flaky test
TestHStore.testCompactingMemStoreCellExceedInmemoryFlushSize (#3834)
This is an automated email from the ASF dual-hosted git repository.
zhangduo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/master by this push:
new 8458e44 HBASE-26438 Fix flaky test TestHStore.testCompactingMemStoreCellExceedInmemoryFlushSize (#3834)
8458e44 is described below
commit 8458e44a1a7d9cd450d5b8a8ad9dd3305e14705a
Author: chenglei <ch...@apache.org>
AuthorDate: Fri Nov 12 22:51:40 2021 +0800
HBASE-26438 Fix flaky test TestHStore.testCompactingMemStoreCellExceedInmemoryFlushSize (#3834)
Signed-off-by: Duo Zhang <zh...@apache.org>
---
.../hadoop/hbase/regionserver/TestHStore.java | 35 ++++++++++++++++++++--
1 file changed, 32 insertions(+), 3 deletions(-)
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHStore.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHStore.java
index 7491068..d08a1d0 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHStore.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHStore.java
@@ -239,6 +239,7 @@ public class TestHStore {
} else {
store = new MyStore(region, hcd, conf, hook, switchToPread);
}
+ region.stores.put(store.getColumnFamilyDescriptor().getName(), store);
return store;
}
@@ -1791,14 +1792,16 @@ public class TestHStore {
// InmemoryFlushSize
@Test(timeout = 60000)
public void testCompactingMemStoreCellExceedInmemoryFlushSize()
- throws IOException, InterruptedException {
+ throws Exception {
Configuration conf = HBaseConfiguration.create();
- conf.set(HStore.MEMSTORE_CLASS_NAME, CompactingMemStore.class.getName());
+ conf.set(HStore.MEMSTORE_CLASS_NAME, MyCompactingMemStore6.class.getName());
init(name.getMethodName(), conf, ColumnFamilyDescriptorBuilder.newBuilder(family)
.setInMemoryCompaction(MemoryCompactionPolicy.BASIC).build());
- int size = (int) ((CompactingMemStore) store.memstore).getInmemoryFlushSize();
+ MyCompactingMemStore6 myCompactingMemStore = ((MyCompactingMemStore6) store.memstore);
+
+ int size = (int) (myCompactingMemStore.getInmemoryFlushSize());
byte[] value = new byte[size + 1];
MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing();
@@ -1809,6 +1812,8 @@ public class TestHStore {
store.add(cell, memStoreSizing);
assertTrue(memStoreSizing.getCellsCount() == 1);
assertTrue(memStoreSizing.getDataSize() == cellByteSize);
+ // Waiting the in memory compaction completed, see HBASE-26438
+ myCompactingMemStore.inMemoryCompactionEndCyclicBarrier.await();
}
// This test is for HBASE-26210 also, test write large cell and small cell concurrently when
@@ -2818,4 +2823,28 @@ public class TestHStore {
}
}
}
+
+ public static class MyCompactingMemStore6 extends CompactingMemStore {
+ private final CyclicBarrier inMemoryCompactionEndCyclicBarrier = new CyclicBarrier(2);
+
+ public MyCompactingMemStore6(Configuration conf, CellComparatorImpl cellComparator,
+ HStore store, RegionServicesForStores regionServices,
+ MemoryCompactionPolicy compactionPolicy) throws IOException {
+ super(conf, cellComparator, store, regionServices, compactionPolicy);
+ }
+
+ @Override
+ void inMemoryCompaction() {
+ try {
+ super.inMemoryCompaction();
+ } finally {
+ try {
+ inMemoryCompactionEndCyclicBarrier.await();
+ } catch (Throwable e) {
+ throw new RuntimeException(e);
+ }
+
+ }
+ }
+ }
}