[
https://issues.apache.org/jira/browse/HBASE-27941?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17820080#comment-17820080
]
Duo Zhang commented on HBASE-27941:
-----------------------------------
After getting the patch for HBASE-28398 in, and also introduce close method for
memstore, we still a leak when running
TestHRegion.testReverseScanner_StackOverflow
{noformat}
2024-02-23T22:23:22,884 ERROR [Time-limited test {}]
util.ResourceLeakDetector(337): LEAK: RefCnt.release() was not called before
it's garbage-collected. See
https://netty.io/wiki/reference-counted-objects.html for more information.
Recent access records:
Created at:
org.apache.hadoop.hbase.nio.RefCnt.<init>(RefCnt.java:59)
org.apache.hadoop.hbase.nio.RefCnt.create(RefCnt.java:54)
org.apache.hadoop.hbase.regionserver.MemStoreLABImpl.<init>(MemStoreLABImpl.java:108)
jdk.internal.reflect.GeneratedConstructorAccessor14.newInstance(Unknown
Source)
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
org.apache.hadoop.hbase.util.ReflectionUtils.instantiate(ReflectionUtils.java:61)
org.apache.hadoop.hbase.util.ReflectionUtils.instantiateWithCustomCtor(ReflectionUtils.java:49)
org.apache.hadoop.hbase.regionserver.MemStoreLAB.newInstance(MemStoreLAB.java:116)
org.apache.hadoop.hbase.regionserver.SegmentFactory.createMutableSegment(SegmentFactory.java:81)
org.apache.hadoop.hbase.regionserver.AbstractMemStore.resetActive(AbstractMemStore.java:93)
org.apache.hadoop.hbase.regionserver.AbstractMemStore.<init>(AbstractMemStore.java:83)
org.apache.hadoop.hbase.regionserver.DefaultMemStore.<init>(DefaultMemStore.java:79)
jdk.internal.reflect.GeneratedConstructorAccessor18.newInstance(Unknown
Source)
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
org.apache.hadoop.hbase.util.ReflectionUtils.instantiate(ReflectionUtils.java:61)
org.apache.hadoop.hbase.util.ReflectionUtils.newInstance(ReflectionUtils.java:98)
org.apache.hadoop.hbase.regionserver.HStore.getMemstore(HStore.java:377)
org.apache.hadoop.hbase.regionserver.HStore.<init>(HStore.java:283)
org.apache.hadoop.hbase.regionserver.HRegion.instantiateHStore(HRegion.java:6914)
org.apache.hadoop.hbase.regionserver.HRegion$1.call(HRegion.java:1178)
org.apache.hadoop.hbase.regionserver.HRegion$1.call(HRegion.java:1175)
java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
java.base/java.lang.Thread.run(Thread.java:833)
{noformat}
This should be the first segment when creating the HRegion. Should be related
to flush logic.
Let me dig more.
> Possible memory leak in MemStoreLAB implementation
> --------------------------------------------------
>
> Key: HBASE-27941
> URL: https://issues.apache.org/jira/browse/HBASE-27941
> Project: HBase
> Issue Type: Bug
> Components: in-memory-compaction, regionserver
> Reporter: Duo Zhang
> Priority: Critical
>
> We got this error message when running ITBLL against branch-3.
> {noformat}
> 2023-06-09 14:44:15,386 ERROR
> [regionserver/core-1-2:16020-shortCompactions-0] util.ResourceLeakDetector:
> LEAK: RefCnt.release() was not called before it's garbage-collected. See
> https://netty.io/wiki/reference-counted-objects.html for more information.
> Recent access records:
> Created at:
> org.apache.hadoop.hbase.nio.RefCnt.<init>(RefCnt.java:59)
> org.apache.hadoop.hbase.nio.RefCnt.create(RefCnt.java:54)
>
> org.apache.hadoop.hbase.regionserver.MemStoreLABImpl.<init>(MemStoreLABImpl.java:108)
> sun.reflect.GeneratedConstructorAccessor13.newInstance(Unknown Source)
>
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> java.lang.reflect.Constructor.newInstance(Constructor.java:423)
>
> org.apache.hadoop.hbase.util.ReflectionUtils.instantiate(ReflectionUtils.java:55)
>
> org.apache.hadoop.hbase.util.ReflectionUtils.instantiateWithCustomCtor(ReflectionUtils.java:43)
>
> org.apache.hadoop.hbase.regionserver.MemStoreLAB.newInstance(MemStoreLAB.java:116)
>
> org.apache.hadoop.hbase.regionserver.SegmentFactory.createMutableSegment(SegmentFactory.java:81)
>
> org.apache.hadoop.hbase.regionserver.AbstractMemStore.resetActive(AbstractMemStore.java:93)
>
> org.apache.hadoop.hbase.regionserver.AbstractMemStore.<init>(AbstractMemStore.java:83)
>
> org.apache.hadoop.hbase.regionserver.DefaultMemStore.<init>(DefaultMemStore.java:79)
> sun.reflect.GeneratedConstructorAccessor12.newInstance(Unknown Source)
>
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> java.lang.reflect.Constructor.newInstance(Constructor.java:423)
>
> org.apache.hadoop.hbase.util.ReflectionUtils.instantiate(ReflectionUtils.java:55)
>
> org.apache.hadoop.hbase.util.ReflectionUtils.newInstance(ReflectionUtils.java:92)
>
> org.apache.hadoop.hbase.regionserver.HStore.getMemstore(HStore.java:377)
> org.apache.hadoop.hbase.regionserver.HStore.<init>(HStore.java:283)
>
> org.apache.hadoop.hbase.regionserver.HRegion.instantiateHStore(HRegion.java:6904)
> org.apache.hadoop.hbase.regionserver.HRegion$1.call(HRegion.java:1173)
> org.apache.hadoop.hbase.regionserver.HRegion$1.call(HRegion.java:1170)
> java.util.concurrent.FutureTask.run(FutureTask.java:266)
>
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> java.util.concurrent.FutureTask.run(FutureTask.java:266)
>
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> java.lang.Thread.run(Thread.java:750)
> {noformat}
> Need to dig more.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)