[
https://issues.apache.org/jira/browse/HBASE-21138?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16599527#comment-16599527
]
Mingliang Liu edited comment on HBASE-21138 at 9/1/18 4:37 AM:
---------------------------------------------------------------
{quote}
We should keep the same behavior.
{quote}
Make sense.
I checked the test source file and thought that, for those local variables we
can actually make them test case variable. That way, we can close it in
{{tearDown()}} in a standard way, and each test can focus on the real
meaningful test by avoiding try-finally clause. In a few cases where the test
method needs to close the region itself, it's fine {{tearDown()}} tries to
close it again using {{HBaseTestingUtility.closeRegionAndWAL()}} as long as we
set the {{region}} to null value after close. The reason is that,
{{HBaseTestingUtility.closeRegionAndWAL()}} will be a no-op if region is null.
So the plan is to review all the test methods: 1) use the test field {{region}}
if possible 2) close in {{tearDown()}}, 3) remove the duplicate close in each
test method {{finally}} clause unless it may relate to other resource (e.g.
{{wals}} close). Sounds good? Thanks,
was (Author: liuml07):
{quote}
We should keep the same behavior.
{quote}
Make sense.
I checked the test source file and thought that, for those local variables we
can actually make them test case variable. That way, we can close it in
{{tearDown()}} in a standard way, and each test can focus on the real
meaningful test by avoiding try-finally clause. In a few cases where the test
method needs to the region itself, it's fine {{tearDown()}} closes it again as
long as we set the {{region}} to null value. The reason is that,
{{HBaseTestingUtility.closeRegionAndWAL()}} will be a no-op if region is null.
So the plan is to review all the test methods: 1) use the test field {{region}}
if possible 2) close in {{tearDown()}}, 3) remove the duplicate close in each
test method {{finally}} clause unless it may relate to other resource (e.g.
{{wals}} close). Sounds good? Thanks,
> Close HRegion instance at the end of every test in TestHRegion
> --------------------------------------------------------------
>
> Key: HBASE-21138
> URL: https://issues.apache.org/jira/browse/HBASE-21138
> Project: HBase
> Issue Type: Test
> Reporter: Ted Yu
> Assignee: Mingliang Liu
> Priority: Major
> Attachments: HBASE-21138.000.patch
>
>
> TestHRegion has over 100 tests.
> The following is from one subtest:
> {code}
> public void testCompactionAffectedByScanners() throws Exception {
> byte[] family = Bytes.toBytes("family");
> this.region = initHRegion(tableName, method, CONF, family);
> {code}
> this.region is not closed at the end of the subtest.
> testToShowNPEOnRegionScannerReseek is another example.
> Every subtest should use the following construct toward the end:
> {code}
> } finally {
> HBaseTestingUtility.closeRegionAndWAL(this.region);
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)