You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Mingliang Liu (JIRA)" <ji...@apache.org> on 2018/09/01 04:38:00 UTC

[jira] [Comment Edited] (HBASE-21138) Close HRegion instance at the end of every test in TestHRegion

    [ 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)