You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by li...@apache.org on 2013/07/31 20:18:16 UTC
svn commit: r1508977 -
/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ipc/HBaseRPC.java
Author: liyin
Date: Wed Jul 31 18:18:16 2013
New Revision: 1508977
URL: http://svn.apache.org/r1508977
Log:
[master] Fix a potential concurrentModificationEx in HBase.ClientCache
Author: adela
Summary: Replicating this fix from the swift branch
Test Plan:
wrote a unit test which was failing on ConcurrentModificationException with the old implementation and passing with the new one.
The test adds two clients (HBaseRpc.CLIENTS.getClient(...) checks whether the client is cached - and if not it puts it in the map clients which serves as cache.
The two clients are added in the map and stopClients will throw the exception, the new implementation works fine
Reviewers: manukranthk, gauravm
Reviewed By: manukranthk
CC: hbase-eng@, aaiyer, shaneh
Differential Revision: https://phabricator.fb.com/D864568
Modified:
hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ipc/HBaseRPC.java
Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ipc/HBaseRPC.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ipc/HBaseRPC.java?rev=1508977&r1=1508976&r2=1508977&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ipc/HBaseRPC.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ipc/HBaseRPC.java Wed Jul 31 18:18:16 2013
@@ -228,10 +228,11 @@ public class HBaseRPC {
client.stop();
}
- protected void stopClients () {
+ protected synchronized void stopClients() {
for (Map.Entry<SocketFactory, HBaseClient> e : clients.entrySet()) {
- this.stopClient (e.getValue ());
+ e.getValue().stop();
}
+ clients.clear();
}
}