[
https://issues.apache.org/jira/browse/HBASE-4181?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13081732#comment-13081732
]
[email protected] commented on HBASE-4181:
------------------------------------------------------
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/1402/#review1348
-----------------------------------------------------------
Ship it!
Nice fix. Thanks for doing it.
- Michael
On 2011-08-09 09:41:48, Jia Liu wrote:
bq.
bq. -----------------------------------------------------------
bq. This is an automatically generated e-mail. To reply, visit:
bq. https://reviews.apache.org/r/1402/
bq. -----------------------------------------------------------
bq.
bq. (Updated 2011-08-09 09:41:48)
bq.
bq.
bq. Review request for hbase.
bq.
bq.
bq. Summary
bq. -------
bq.
bq. HConnectionManager can't find cached HRegionInterface makes client very
slow
bq. Addressing.createHostAndPortStr(hostname, port); //the Addressing created
a address like "node41:60010"
bq. ......
bq. this.servers.put(address.toString(), server);
bq.
bq. //but here address.toString() send an address like
"node41/10.61.2l.171:60010
bq.
bq.
bq. This addresses bug HBase-4181.
bq. https://issues.apache.org/jira/browse/HBase-4181
bq.
bq.
bq. Diffs
bq. -----
bq.
bq.
http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
1155226
bq.
bq. Diff: https://reviews.apache.org/r/1402/diff
bq.
bq.
bq. Testing
bq. -------
bq.
bq. Tests passed locally.
bq.
bq.
bq. Thanks,
bq.
bq. Jia
bq.
bq.
> HConnectionManager can't find cached HRegionInterface makes client very slow
> ----------------------------------------------------------------------------
>
> Key: HBASE-4181
> URL: https://issues.apache.org/jira/browse/HBASE-4181
> Project: HBase
> Issue Type: Bug
> Components: client
> Affects Versions: 0.90.4, 0.92.0
> Reporter: Liu Jia
> Priority: Critical
> Labels: HConnectionManager
> Fix For: 0.90.4
>
> Attachments: HBASE-4181-trunk-v2.patch, HBASE-4181-trunk-v3.patch,
> HBASE-4181.patch, HConnectionManager.patch
>
>
> HRegionInterface getHRegionConnection(final String hostname,
> final int port, final InetSocketAddress isa, final boolean master)
> throws IOException
> /////////////////////////
> String rsName = isa != null ? isa.toString() : Addressing
> .createHostAndPortStr(hostname, port);
>
> ////here,if isa is null, the Addressing created a address like "node41:60010"
> ////should
> use "isa.toString():new InetSocketAddress(hostname, port).toString();"
> ////instead
> of "Addressing.createHostAndPortStr(hostname, port);"
> server = this.servers.get(rsName);
> if (server == null) {
> // create a unique lock for this RS (if necessary)
> this.connectionLock.putIfAbsent(rsName, rsName);
> // get the RS lock
> synchronized (this.connectionLock.get(rsName)) {
> // do one more lookup in case we were stalled above
> server = this.servers.get(rsName);
> if (server == null) {
> try {
> if (clusterId.hasId()) {
> conf.set(HConstants.CLUSTER_ID, clusterId.getId());
> }
> // Only create isa when we need to.
> InetSocketAddress address = isa != null ? isa
> : new InetSocketAddress(hostname, port);
> // definitely a cache miss. establish an RPC for this RS
> server = (HRegionInterface) HBaseRPC.waitForProxy(
> serverInterfaceClass, HRegionInterface.VERSION, address,
> this.conf, this.maxRPCAttempts, this.rpcTimeout,
> this.rpcTimeout);
> this.servers.put(address.toString(), server);
>
> ////but here address.toString() send an address like
> "node41/10.61.2l.171:60010
> ////so this method can never get cached address and make client request very
> slow due to it's synchronized.
>
>
> } catch (RemoteException e) {
> LOG.warn("RemoteException connecting to RS", e);
> // Throw what the RemoteException was carrying.
> throw RemoteExceptionHandler.decodeRemoteException(e);
> }
> }
> }
> ///////////////////////
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira