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); > }
