Hi,

fwiw, the "close" method was added in HBaseAdmin for HBase 0.90.5.

N.

On Thu, Apr 19, 2012 at 8:09 AM, Eason Lee <softse....@gmail.com> wrote:

> I don't think this issue can resovle the problem
> ZKWatcher is removed,but the configuration and HConnectionImplementation
> objects are still in HConnectionManager
> this may still cause memery leak
>
> but calling HConnectionManager.**deleteConnection may resolve HBASE-5073
> problem.
> I can see
>
>      if (this.zooKeeper != null) {
>        LOG.info("Closed zookeeper sessionid=0x" +
>          Long.toHexString(this.**zooKeeper.getZooKeeper().**
> getSessionId()));
>        this.zooKeeper.close();
>        this.zooKeeper = null;
>      }
>
> in HConnectionImplementation.**close which is called by
> HConnectionManager.**deleteConnection
>
>
>
>
>  Hi Lee
>>
>> Is HBASE-5073 resolved in that release?
>>
>> Regards
>> Ram
>>
>>  -----Original Message-----
>>> From: Eason Lee [mailto:softse....@gmail.com]
>>> Sent: Thursday, April 19, 2012 10:40 AM
>>> To: user@hbase.apache.org
>>> Subject: Re: HBaseAdmin needs a close methord
>>>
>>> I am using cloudera's cdh3u3
>>>
>>>> Hi Lee
>>>>
>>>> Which version of HBase are you using?
>>>>
>>>> Regards
>>>> Ram
>>>>
>>>>  -----Original Message-----
>>>>> From: Eason Lee [mailto:softse....@gmail.com]
>>>>> Sent: Thursday, April 19, 2012 9:36 AM
>>>>> To: user@hbase.apache.org
>>>>> Subject: HBaseAdmin needs a close methord
>>>>>
>>>>> Resently, my app meets a problem list as follows
>>>>>
>>>>> Can't construct instance of class
>>>>> org/apache/hadoop/hbase/**client/HBaseAdmin
>>>>> Exception in thread "Thread-2" java.lang.OutOfMemoryError: unable to
>>>>> create new native thread
>>>>> at java.lang.Thread.start0(Native Method)
>>>>> at java.lang.Thread.start(Thread.**java:640)
>>>>> at org.apache.zookeeper.**ClientCnxn.start(ClientCnxn.**java:414)
>>>>> at org.apache.zookeeper.**ZooKeeper.<init>(ZooKeeper.**java:378)
>>>>> at org.apache.hadoop.hbase.**zookeeper.ZKUtil.connect(**
>>>>> ZKUtil.java:97)
>>>>> at
>>>>>
>>>>>  org.apache.hadoop.hbase.**zookeeper.ZooKeeperWatcher.<**
>>> init>(ZooKeeperWatc
>>>
>>>> her.java:119)
>>>>> at
>>>>>
>>>>>  org.apache.hadoop.hbase.**client.HConnectionManager$**
>>> HConnectionImplementa
>>>
>>>> tion.getZooKeeperWatcher(**HConnectionManager.java:1002)
>>>>> at
>>>>>
>>>>>  org.apache.hadoop.hbase.**client.HConnectionManager$**
>>> HConnectionImplementa
>>>
>>>> tion.setupZookeeperTrackers(**HConnectionManager.java:304)
>>>>> at
>>>>>
>>>>>  org.apache.hadoop.hbase.**client.HConnectionManager$**
>>> HConnectionImplementa
>>>
>>>> tion.<init>(**HConnectionManager.java:295)
>>>>> at
>>>>>
>>>>>  org.apache.hadoop.hbase.**client.HConnectionManager.**
>>> getConnection(HConnec
>>>
>>>> tionManager.java:157)
>>>>> at
>>>>>
>>>> org.apache.hadoop.hbase.**client.HBaseAdmin.<init>(**
>>> HBaseAdmin.java:90)
>>>
>>>> Call to org.apache.hadoop.hbase.**HBaseAdmin::HBaseAdmin failed!
>>>>>
>>>>> My app create HBaseAdmin every 30s,and the threads used by my app
>>>>> increases about 1thread/30s.See from the stack, there is only one
>>>>> HBaseAdmin in Memory, but lots of Configuration and
>>>>> HConnectionImplementation instances.
>>>>>
>>>>> I can see from the sources, everytime when HBaseAdmin is created, a
>>>>>
>>>> new
>>>
>>>> Configuration and HConnectionImplementation is created and added to
>>>>> HConnectionManager.HBASE_**INSTANCES.So<http://HConnectionManager.HBASE_INSTANCES.So>they
>>>>>  are not collected by gc
>>>>>
>>>> when
>>>
>>>> HBaseAdmin is collected.
>>>>>
>>>>> So i think we need to add a close methord to remove the
>>>>> Configuration&**HConnectionImplementation from
>>>>> HConnectionManager.HBASE_**INSTANCES.Just as follows:
>>>>>
>>>>> public void close(){
>>>>>        HConnectionManager.**deleteConnection(**getConfiguration(),
>>>>> true);
>>>>> }
>>>>>
>>>>
>>>>
>>>>
>>>>
>>
>>
>>
>
>

Reply via email to