Hi Lee

Which version of HBase are you using?

Regards
Ram

> -----Original Message-----
> From: Eason Lee [mailto:[email protected]]
> Sent: Thursday, April 19, 2012 9:36 AM
> To: [email protected]
> 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 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