[jira] [Updated] (HADOOP-11772) RPC Invoker relies on static ClientCache which has synchronized(this) blocks

2015-05-20 Thread Haohui Mai (JIRA)

 [ 
https://issues.apache.org/jira/browse/HADOOP-11772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Haohui Mai updated HADOOP-11772:

   Resolution: Fixed
Fix Version/s: 2.8.0
 Release Note: The Client#call() methods that are deprecated since 0.23 
have been removed.
 Hadoop Flags: Incompatible change,Reviewed
   Status: Resolved  (was: Patch Available)

> RPC Invoker relies on static ClientCache which has synchronized(this) blocks
> 
>
> Key: HADOOP-11772
> URL: https://issues.apache.org/jira/browse/HADOOP-11772
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: ipc, performance
>Reporter: Gopal V
>Assignee: Haohui Mai
> Fix For: 2.8.0
>
> Attachments: HADOOP-11772-001.patch, HADOOP-11772-002.patch, 
> HADOOP-11772-003.patch, HADOOP-11772-wip-001.patch, 
> HADOOP-11772-wip-002.patch, HADOOP-11772.004.patch, after-ipc-fix.png, 
> cached-connections.png, cached-locking.png, dfs-sync-ipc.png, 
> sync-client-bt.png, sync-client-threads.png
>
>
> {code}
>   private static ClientCache CLIENTS=new ClientCache();
> ...
> this.client = CLIENTS.getClient(conf, factory);
> {code}
> Meanwhile in ClientCache
> {code}
> public synchronized Client getClient(Configuration conf,
>   SocketFactory factory, Class valueClass) {
> ...
>Client client = clients.get(factory);
> if (client == null) {
>   client = new Client(valueClass, conf, factory);
>   clients.put(factory, client);
> } else {
>   client.incCount();
> }
> {code}
> All invokers end up calling these methods, resulting in IPC clients choking 
> up.
> !sync-client-threads.png!
> !sync-client-bt.png!
> !dfs-sync-ipc.png!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (HADOOP-11772) RPC Invoker relies on static ClientCache which has synchronized(this) blocks

2015-05-20 Thread Haohui Mai (JIRA)

 [ 
https://issues.apache.org/jira/browse/HADOOP-11772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Haohui Mai updated HADOOP-11772:

Labels:   (was: BB2015-05-RFC)

> RPC Invoker relies on static ClientCache which has synchronized(this) blocks
> 
>
> Key: HADOOP-11772
> URL: https://issues.apache.org/jira/browse/HADOOP-11772
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: ipc, performance
>Reporter: Gopal V
>Assignee: Akira AJISAKA
> Attachments: HADOOP-11772-001.patch, HADOOP-11772-002.patch, 
> HADOOP-11772-003.patch, HADOOP-11772-wip-001.patch, 
> HADOOP-11772-wip-002.patch, HADOOP-11772.004.patch, after-ipc-fix.png, 
> cached-connections.png, cached-locking.png, dfs-sync-ipc.png, 
> sync-client-bt.png, sync-client-threads.png
>
>
> {code}
>   private static ClientCache CLIENTS=new ClientCache();
> ...
> this.client = CLIENTS.getClient(conf, factory);
> {code}
> Meanwhile in ClientCache
> {code}
> public synchronized Client getClient(Configuration conf,
>   SocketFactory factory, Class valueClass) {
> ...
>Client client = clients.get(factory);
> if (client == null) {
>   client = new Client(valueClass, conf, factory);
>   clients.put(factory, client);
> } else {
>   client.incCount();
> }
> {code}
> All invokers end up calling these methods, resulting in IPC clients choking 
> up.
> !sync-client-threads.png!
> !sync-client-bt.png!
> !dfs-sync-ipc.png!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (HADOOP-11772) RPC Invoker relies on static ClientCache which has synchronized(this) blocks

2015-05-19 Thread Gopal V (JIRA)

 [ 
https://issues.apache.org/jira/browse/HADOOP-11772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gopal V updated HADOOP-11772:
-
Attachment: cached-locking.png
cached-connections.png

The patch looks good, there's no performance degradation due to locking

!cached-locking.png!

Tried to check total held connections, which seems to also be contained with 
the guava cache patch.

!cached-connections.png!

> RPC Invoker relies on static ClientCache which has synchronized(this) blocks
> 
>
> Key: HADOOP-11772
> URL: https://issues.apache.org/jira/browse/HADOOP-11772
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: ipc, performance
>Reporter: Gopal V
>Assignee: Akira AJISAKA
>  Labels: BB2015-05-RFC
> Attachments: HADOOP-11772-001.patch, HADOOP-11772-002.patch, 
> HADOOP-11772-003.patch, HADOOP-11772-wip-001.patch, 
> HADOOP-11772-wip-002.patch, HADOOP-11772.004.patch, after-ipc-fix.png, 
> cached-connections.png, cached-locking.png, dfs-sync-ipc.png, 
> sync-client-bt.png, sync-client-threads.png
>
>
> {code}
>   private static ClientCache CLIENTS=new ClientCache();
> ...
> this.client = CLIENTS.getClient(conf, factory);
> {code}
> Meanwhile in ClientCache
> {code}
> public synchronized Client getClient(Configuration conf,
>   SocketFactory factory, Class valueClass) {
> ...
>Client client = clients.get(factory);
> if (client == null) {
>   client = new Client(valueClass, conf, factory);
>   clients.put(factory, client);
> } else {
>   client.incCount();
> }
> {code}
> All invokers end up calling these methods, resulting in IPC clients choking 
> up.
> !sync-client-threads.png!
> !sync-client-bt.png!
> !dfs-sync-ipc.png!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (HADOOP-11772) RPC Invoker relies on static ClientCache which has synchronized(this) blocks

2015-05-15 Thread Haohui Mai (JIRA)

 [ 
https://issues.apache.org/jira/browse/HADOOP-11772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Haohui Mai updated HADOOP-11772:

Attachment: HADOOP-11772.004.patch

> RPC Invoker relies on static ClientCache which has synchronized(this) blocks
> 
>
> Key: HADOOP-11772
> URL: https://issues.apache.org/jira/browse/HADOOP-11772
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: ipc, performance
>Reporter: Gopal V
>Assignee: Akira AJISAKA
>  Labels: BB2015-05-RFC
> Attachments: HADOOP-11772-001.patch, HADOOP-11772-002.patch, 
> HADOOP-11772-003.patch, HADOOP-11772-wip-001.patch, 
> HADOOP-11772-wip-002.patch, HADOOP-11772.004.patch, after-ipc-fix.png, 
> dfs-sync-ipc.png, sync-client-bt.png, sync-client-threads.png
>
>
> {code}
>   private static ClientCache CLIENTS=new ClientCache();
> ...
> this.client = CLIENTS.getClient(conf, factory);
> {code}
> Meanwhile in ClientCache
> {code}
> public synchronized Client getClient(Configuration conf,
>   SocketFactory factory, Class valueClass) {
> ...
>Client client = clients.get(factory);
> if (client == null) {
>   client = new Client(valueClass, conf, factory);
>   clients.put(factory, client);
> } else {
>   client.incCount();
> }
> {code}
> All invokers end up calling these methods, resulting in IPC clients choking 
> up.
> !sync-client-threads.png!
> !sync-client-bt.png!
> !dfs-sync-ipc.png!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (HADOOP-11772) RPC Invoker relies on static ClientCache which has synchronized(this) blocks

2015-05-08 Thread Ray Chiang (JIRA)

 [ 
https://issues.apache.org/jira/browse/HADOOP-11772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ray Chiang updated HADOOP-11772:

Labels: BB2015-05-RFC  (was: BB2015-05-TBR)

> RPC Invoker relies on static ClientCache which has synchronized(this) blocks
> 
>
> Key: HADOOP-11772
> URL: https://issues.apache.org/jira/browse/HADOOP-11772
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: ipc, performance
>Reporter: Gopal V
>Assignee: Akira AJISAKA
>  Labels: BB2015-05-RFC
> Attachments: HADOOP-11772-001.patch, HADOOP-11772-002.patch, 
> HADOOP-11772-003.patch, HADOOP-11772-wip-001.patch, 
> HADOOP-11772-wip-002.patch, after-ipc-fix.png, dfs-sync-ipc.png, 
> sync-client-bt.png, sync-client-threads.png
>
>
> {code}
>   private static ClientCache CLIENTS=new ClientCache();
> ...
> this.client = CLIENTS.getClient(conf, factory);
> {code}
> Meanwhile in ClientCache
> {code}
> public synchronized Client getClient(Configuration conf,
>   SocketFactory factory, Class valueClass) {
> ...
>Client client = clients.get(factory);
> if (client == null) {
>   client = new Client(valueClass, conf, factory);
>   clients.put(factory, client);
> } else {
>   client.incCount();
> }
> {code}
> All invokers end up calling these methods, resulting in IPC clients choking 
> up.
> !sync-client-threads.png!
> !sync-client-bt.png!
> !dfs-sync-ipc.png!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (HADOOP-11772) RPC Invoker relies on static ClientCache which has synchronized(this) blocks

2015-05-05 Thread Allen Wittenauer (JIRA)

 [ 
https://issues.apache.org/jira/browse/HADOOP-11772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Allen Wittenauer updated HADOOP-11772:
--
Labels: BB2015-05-TBR  (was: )

> RPC Invoker relies on static ClientCache which has synchronized(this) blocks
> 
>
> Key: HADOOP-11772
> URL: https://issues.apache.org/jira/browse/HADOOP-11772
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: ipc, performance
>Reporter: Gopal V
>Assignee: Akira AJISAKA
>  Labels: BB2015-05-TBR
> Attachments: HADOOP-11772-001.patch, HADOOP-11772-002.patch, 
> HADOOP-11772-003.patch, HADOOP-11772-wip-001.patch, 
> HADOOP-11772-wip-002.patch, after-ipc-fix.png, dfs-sync-ipc.png, 
> sync-client-bt.png, sync-client-threads.png
>
>
> {code}
>   private static ClientCache CLIENTS=new ClientCache();
> ...
> this.client = CLIENTS.getClient(conf, factory);
> {code}
> Meanwhile in ClientCache
> {code}
> public synchronized Client getClient(Configuration conf,
>   SocketFactory factory, Class valueClass) {
> ...
>Client client = clients.get(factory);
> if (client == null) {
>   client = new Client(valueClass, conf, factory);
>   clients.put(factory, client);
> } else {
>   client.incCount();
> }
> {code}
> All invokers end up calling these methods, resulting in IPC clients choking 
> up.
> !sync-client-threads.png!
> !sync-client-bt.png!
> !dfs-sync-ipc.png!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (HADOOP-11772) RPC Invoker relies on static ClientCache which has synchronized(this) blocks

2015-04-22 Thread Akira AJISAKA (JIRA)

 [ 
https://issues.apache.org/jira/browse/HADOOP-11772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Akira AJISAKA updated HADOOP-11772:
---
Attachment: HADOOP-11772-003.patch

v3 patch removes an unused {{@VisibleForTesting}} method.

> RPC Invoker relies on static ClientCache which has synchronized(this) blocks
> 
>
> Key: HADOOP-11772
> URL: https://issues.apache.org/jira/browse/HADOOP-11772
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: ipc, performance
>Reporter: Gopal V
>Assignee: Akira AJISAKA
> Attachments: HADOOP-11772-001.patch, HADOOP-11772-002.patch, 
> HADOOP-11772-003.patch, HADOOP-11772-wip-001.patch, 
> HADOOP-11772-wip-002.patch, after-ipc-fix.png, dfs-sync-ipc.png, 
> sync-client-bt.png, sync-client-threads.png
>
>
> {code}
>   private static ClientCache CLIENTS=new ClientCache();
> ...
> this.client = CLIENTS.getClient(conf, factory);
> {code}
> Meanwhile in ClientCache
> {code}
> public synchronized Client getClient(Configuration conf,
>   SocketFactory factory, Class valueClass) {
> ...
>Client client = clients.get(factory);
> if (client == null) {
>   client = new Client(valueClass, conf, factory);
>   clients.put(factory, client);
> } else {
>   client.incCount();
> }
> {code}
> All invokers end up calling these methods, resulting in IPC clients choking 
> up.
> !sync-client-threads.png!
> !sync-client-bt.png!
> !dfs-sync-ipc.png!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (HADOOP-11772) RPC Invoker relies on static ClientCache which has synchronized(this) blocks

2015-04-18 Thread Akira AJISAKA (JIRA)

 [ 
https://issues.apache.org/jira/browse/HADOOP-11772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Akira AJISAKA updated HADOOP-11772:
---
Attachment: HADOOP-11772-002.patch

Thanks [~gopalv] for answering the questions! Good to hear that.
Attaching v2 patch.
* Added test cases
* Changed the default value of the new parameter to 1.
* Refactored {{ClientCache#getClientWithLeastReferences}}

> RPC Invoker relies on static ClientCache which has synchronized(this) blocks
> 
>
> Key: HADOOP-11772
> URL: https://issues.apache.org/jira/browse/HADOOP-11772
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: ipc, performance
>Reporter: Gopal V
>Assignee: Akira AJISAKA
> Attachments: HADOOP-11772-001.patch, HADOOP-11772-002.patch, 
> HADOOP-11772-wip-001.patch, HADOOP-11772-wip-002.patch, after-ipc-fix.png, 
> dfs-sync-ipc.png, sync-client-bt.png, sync-client-threads.png
>
>
> {code}
>   private static ClientCache CLIENTS=new ClientCache();
> ...
> this.client = CLIENTS.getClient(conf, factory);
> {code}
> Meanwhile in ClientCache
> {code}
> public synchronized Client getClient(Configuration conf,
>   SocketFactory factory, Class valueClass) {
> ...
>Client client = clients.get(factory);
> if (client == null) {
>   client = new Client(valueClass, conf, factory);
>   clients.put(factory, client);
> } else {
>   client.incCount();
> }
> {code}
> All invokers end up calling these methods, resulting in IPC clients choking 
> up.
> !sync-client-threads.png!
> !sync-client-bt.png!
> !dfs-sync-ipc.png!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (HADOOP-11772) RPC Invoker relies on static ClientCache which has synchronized(this) blocks

2015-04-15 Thread Jing Zhao (JIRA)

 [ 
https://issues.apache.org/jira/browse/HADOOP-11772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jing Zhao updated HADOOP-11772:
---
Target Version/s: 2.7.1  (was: 2.8.0)

> RPC Invoker relies on static ClientCache which has synchronized(this) blocks
> 
>
> Key: HADOOP-11772
> URL: https://issues.apache.org/jira/browse/HADOOP-11772
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: ipc, performance
>Reporter: Gopal V
>Assignee: Akira AJISAKA
> Attachments: HADOOP-11772-001.patch, HADOOP-11772-wip-001.patch, 
> HADOOP-11772-wip-002.patch, after-ipc-fix.png, dfs-sync-ipc.png, 
> sync-client-bt.png, sync-client-threads.png
>
>
> {code}
>   private static ClientCache CLIENTS=new ClientCache();
> ...
> this.client = CLIENTS.getClient(conf, factory);
> {code}
> Meanwhile in ClientCache
> {code}
> public synchronized Client getClient(Configuration conf,
>   SocketFactory factory, Class valueClass) {
> ...
>Client client = clients.get(factory);
> if (client == null) {
>   client = new Client(valueClass, conf, factory);
>   clients.put(factory, client);
> } else {
>   client.incCount();
> }
> {code}
> All invokers end up calling these methods, resulting in IPC clients choking 
> up.
> !sync-client-threads.png!
> !sync-client-bt.png!
> !dfs-sync-ipc.png!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (HADOOP-11772) RPC Invoker relies on static ClientCache which has synchronized(this) blocks

2015-04-08 Thread Gopal V (JIRA)

 [ 
https://issues.apache.org/jira/browse/HADOOP-11772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gopal V updated HADOOP-11772:
-
Attachment: after-ipc-fix.png

[~ajisakaa]: looks much better with the patch.

!after-ipc-fix.png!

I still see the occasional blocked getConnection(), but that's because I'm 
running 24 threads in parallel with 10 IPC Client instances.



> RPC Invoker relies on static ClientCache which has synchronized(this) blocks
> 
>
> Key: HADOOP-11772
> URL: https://issues.apache.org/jira/browse/HADOOP-11772
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: ipc, performance
>Reporter: Gopal V
>Assignee: Akira AJISAKA
> Attachments: HADOOP-11772-001.patch, HADOOP-11772-wip-001.patch, 
> HADOOP-11772-wip-002.patch, after-ipc-fix.png, dfs-sync-ipc.png, 
> sync-client-bt.png, sync-client-threads.png
>
>
> {code}
>   private static ClientCache CLIENTS=new ClientCache();
> ...
> this.client = CLIENTS.getClient(conf, factory);
> {code}
> Meanwhile in ClientCache
> {code}
> public synchronized Client getClient(Configuration conf,
>   SocketFactory factory, Class valueClass) {
> ...
>Client client = clients.get(factory);
> if (client == null) {
>   client = new Client(valueClass, conf, factory);
>   clients.put(factory, client);
> } else {
>   client.incCount();
> }
> {code}
> All invokers end up calling these methods, resulting in IPC clients choking 
> up.
> !sync-client-threads.png!
> !sync-client-bt.png!
> !dfs-sync-ipc.png!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (HADOOP-11772) RPC Invoker relies on static ClientCache which has synchronized(this) blocks

2015-04-06 Thread Akira AJISAKA (JIRA)

 [ 
https://issues.apache.org/jira/browse/HADOOP-11772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Akira AJISAKA updated HADOOP-11772:
---
Attachment: HADOOP-11772-wip-002.patch

Fixed the test failure.

> RPC Invoker relies on static ClientCache which has synchronized(this) blocks
> 
>
> Key: HADOOP-11772
> URL: https://issues.apache.org/jira/browse/HADOOP-11772
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: ipc, performance
>Reporter: Gopal V
>Assignee: Akira AJISAKA
> Attachments: HADOOP-11772-001.patch, HADOOP-11772-wip-001.patch, 
> HADOOP-11772-wip-002.patch, dfs-sync-ipc.png, sync-client-bt.png, 
> sync-client-threads.png
>
>
> {code}
>   private static ClientCache CLIENTS=new ClientCache();
> ...
> this.client = CLIENTS.getClient(conf, factory);
> {code}
> Meanwhile in ClientCache
> {code}
> public synchronized Client getClient(Configuration conf,
>   SocketFactory factory, Class valueClass) {
> ...
>Client client = clients.get(factory);
> if (client == null) {
>   client = new Client(valueClass, conf, factory);
>   clients.put(factory, client);
> } else {
>   client.incCount();
> }
> {code}
> All invokers end up calling these methods, resulting in IPC clients choking 
> up.
> !sync-client-threads.png!
> !sync-client-bt.png!
> !dfs-sync-ipc.png!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (HADOOP-11772) RPC Invoker relies on static ClientCache which has synchronized(this) blocks

2015-04-03 Thread Akira AJISAKA (JIRA)

 [ 
https://issues.apache.org/jira/browse/HADOOP-11772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Akira AJISAKA updated HADOOP-11772:
---
Attachment: HADOOP-11772-wip-001.patch

Thanks [~gopalv] for your comment. Attaching a sample patch to create pool for 
Clients.
TODO:
* Add a document for the new parameter
* Create a test

> RPC Invoker relies on static ClientCache which has synchronized(this) blocks
> 
>
> Key: HADOOP-11772
> URL: https://issues.apache.org/jira/browse/HADOOP-11772
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: ipc, performance
>Reporter: Gopal V
>Assignee: Akira AJISAKA
> Attachments: HADOOP-11772-001.patch, HADOOP-11772-wip-001.patch, 
> dfs-sync-ipc.png, sync-client-bt.png, sync-client-threads.png
>
>
> {code}
>   private static ClientCache CLIENTS=new ClientCache();
> ...
> this.client = CLIENTS.getClient(conf, factory);
> {code}
> Meanwhile in ClientCache
> {code}
> public synchronized Client getClient(Configuration conf,
>   SocketFactory factory, Class valueClass) {
> ...
>Client client = clients.get(factory);
> if (client == null) {
>   client = new Client(valueClass, conf, factory);
>   clients.put(factory, client);
> } else {
>   client.incCount();
> }
> {code}
> All invokers end up calling these methods, resulting in IPC clients choking 
> up.
> !sync-client-threads.png!
> !sync-client-bt.png!
> !dfs-sync-ipc.png!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (HADOOP-11772) RPC Invoker relies on static ClientCache which has synchronized(this) blocks

2015-03-31 Thread Gopal V (JIRA)

 [ 
https://issues.apache.org/jira/browse/HADOOP-11772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gopal V updated HADOOP-11772:
-
Attachment: dfs-sync-ipc.png

[~ajisakaa]: Does this patch fix the requirement of needing >1 IPC client per 
socket-factory?

>From a quick read, the single factory -> single IPC client mapping still 
>exists, so the same hash-bucket will be locked by all processes using regular 
>RPC invoker.


> RPC Invoker relies on static ClientCache which has synchronized(this) blocks
> 
>
> Key: HADOOP-11772
> URL: https://issues.apache.org/jira/browse/HADOOP-11772
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: ipc, performance
>Reporter: Gopal V
>Assignee: Akira AJISAKA
> Attachments: HADOOP-11772-001.patch, dfs-sync-ipc.png, 
> sync-client-bt.png, sync-client-threads.png
>
>
> {code}
>   private static ClientCache CLIENTS=new ClientCache();
> ...
> this.client = CLIENTS.getClient(conf, factory);
> {code}
> Meanwhile in ClientCache
> {code}
> public synchronized Client getClient(Configuration conf,
>   SocketFactory factory, Class valueClass) {
> ...
>Client client = clients.get(factory);
> if (client == null) {
>   client = new Client(valueClass, conf, factory);
>   clients.put(factory, client);
> } else {
>   client.incCount();
> }
> {code}
> All invokers end up calling these methods, resulting in IPC clients choking 
> up.
> !sync-client-threads.png!
> !sync-client-bt.png!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (HADOOP-11772) RPC Invoker relies on static ClientCache which has synchronized(this) blocks

2015-03-31 Thread Gopal V (JIRA)

 [ 
https://issues.apache.org/jira/browse/HADOOP-11772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gopal V updated HADOOP-11772:
-
Description: 
{code}
  private static ClientCache CLIENTS=new ClientCache();
...
this.client = CLIENTS.getClient(conf, factory);
{code}

Meanwhile in ClientCache

{code}
public synchronized Client getClient(Configuration conf,
  SocketFactory factory, Class valueClass) {
...
   Client client = clients.get(factory);
if (client == null) {
  client = new Client(valueClass, conf, factory);
  clients.put(factory, client);
} else {
  client.incCount();
}
{code}

All invokers end up calling these methods, resulting in IPC clients choking up.

!sync-client-threads.png!
!sync-client-bt.png!
!dfs-sync-ipc.png!

  was:
{code}
  private static ClientCache CLIENTS=new ClientCache();
...
this.client = CLIENTS.getClient(conf, factory);
{code}

Meanwhile in ClientCache

{code}
public synchronized Client getClient(Configuration conf,
  SocketFactory factory, Class valueClass) {
...
   Client client = clients.get(factory);
if (client == null) {
  client = new Client(valueClass, conf, factory);
  clients.put(factory, client);
} else {
  client.incCount();
}
{code}

All invokers end up calling these methods, resulting in IPC clients choking up.

!sync-client-threads.png!
!sync-client-bt.png!


> RPC Invoker relies on static ClientCache which has synchronized(this) blocks
> 
>
> Key: HADOOP-11772
> URL: https://issues.apache.org/jira/browse/HADOOP-11772
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: ipc, performance
>Reporter: Gopal V
>Assignee: Akira AJISAKA
> Attachments: HADOOP-11772-001.patch, dfs-sync-ipc.png, 
> sync-client-bt.png, sync-client-threads.png
>
>
> {code}
>   private static ClientCache CLIENTS=new ClientCache();
> ...
> this.client = CLIENTS.getClient(conf, factory);
> {code}
> Meanwhile in ClientCache
> {code}
> public synchronized Client getClient(Configuration conf,
>   SocketFactory factory, Class valueClass) {
> ...
>Client client = clients.get(factory);
> if (client == null) {
>   client = new Client(valueClass, conf, factory);
>   clients.put(factory, client);
> } else {
>   client.incCount();
> }
> {code}
> All invokers end up calling these methods, resulting in IPC clients choking 
> up.
> !sync-client-threads.png!
> !sync-client-bt.png!
> !dfs-sync-ipc.png!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (HADOOP-11772) RPC Invoker relies on static ClientCache which has synchronized(this) blocks

2015-03-30 Thread Akira AJISAKA (JIRA)

 [ 
https://issues.apache.org/jira/browse/HADOOP-11772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Akira AJISAKA updated HADOOP-11772:
---
Component/s: performance

> RPC Invoker relies on static ClientCache which has synchronized(this) blocks
> 
>
> Key: HADOOP-11772
> URL: https://issues.apache.org/jira/browse/HADOOP-11772
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: ipc, performance
>Reporter: Gopal V
>Assignee: Akira AJISAKA
> Attachments: HADOOP-11772-001.patch, sync-client-bt.png, 
> sync-client-threads.png
>
>
> {code}
>   private static ClientCache CLIENTS=new ClientCache();
> ...
> this.client = CLIENTS.getClient(conf, factory);
> {code}
> Meanwhile in ClientCache
> {code}
> public synchronized Client getClient(Configuration conf,
>   SocketFactory factory, Class valueClass) {
> ...
>Client client = clients.get(factory);
> if (client == null) {
>   client = new Client(valueClass, conf, factory);
>   clients.put(factory, client);
> } else {
>   client.incCount();
> }
> {code}
> All invokers end up calling these methods, resulting in IPC clients choking 
> up.
> !sync-client-threads.png!
> !sync-client-bt.png!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (HADOOP-11772) RPC Invoker relies on static ClientCache which has synchronized(this) blocks

2015-03-30 Thread Akira AJISAKA (JIRA)

 [ 
https://issues.apache.org/jira/browse/HADOOP-11772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Akira AJISAKA updated HADOOP-11772:
---
Target Version/s: 2.8.0
  Status: Patch Available  (was: Open)

> RPC Invoker relies on static ClientCache which has synchronized(this) blocks
> 
>
> Key: HADOOP-11772
> URL: https://issues.apache.org/jira/browse/HADOOP-11772
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: ipc
>Reporter: Gopal V
>Assignee: Akira AJISAKA
> Attachments: HADOOP-11772-001.patch, sync-client-bt.png, 
> sync-client-threads.png
>
>
> {code}
>   private static ClientCache CLIENTS=new ClientCache();
> ...
> this.client = CLIENTS.getClient(conf, factory);
> {code}
> Meanwhile in ClientCache
> {code}
> public synchronized Client getClient(Configuration conf,
>   SocketFactory factory, Class valueClass) {
> ...
>Client client = clients.get(factory);
> if (client == null) {
>   client = new Client(valueClass, conf, factory);
>   clients.put(factory, client);
> } else {
>   client.incCount();
> }
> {code}
> All invokers end up calling these methods, resulting in IPC clients choking 
> up.
> !sync-client-threads.png!
> !sync-client-bt.png!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (HADOOP-11772) RPC Invoker relies on static ClientCache which has synchronized(this) blocks

2015-03-30 Thread Akira AJISAKA (JIRA)

 [ 
https://issues.apache.org/jira/browse/HADOOP-11772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Akira AJISAKA updated HADOOP-11772:
---
Attachment: HADOOP-11772-001.patch

Thanks [~gopalv] for the report. Attaching a patch to
* Use ConcurrentHashMap for caching clients
* Remove unnecessarily synchronization

> RPC Invoker relies on static ClientCache which has synchronized(this) blocks
> 
>
> Key: HADOOP-11772
> URL: https://issues.apache.org/jira/browse/HADOOP-11772
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: ipc
>Reporter: Gopal V
>Assignee: Akira AJISAKA
> Attachments: HADOOP-11772-001.patch, sync-client-bt.png, 
> sync-client-threads.png
>
>
> {code}
>   private static ClientCache CLIENTS=new ClientCache();
> ...
> this.client = CLIENTS.getClient(conf, factory);
> {code}
> Meanwhile in ClientCache
> {code}
> public synchronized Client getClient(Configuration conf,
>   SocketFactory factory, Class valueClass) {
> ...
>Client client = clients.get(factory);
> if (client == null) {
>   client = new Client(valueClass, conf, factory);
>   clients.put(factory, client);
> } else {
>   client.incCount();
> }
> {code}
> All invokers end up calling these methods, resulting in IPC clients choking 
> up.
> !sync-client-threads.png!
> !sync-client-bt.png!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (HADOOP-11772) RPC Invoker relies on static ClientCache which has synchronized(this) blocks

2015-03-27 Thread Gopal V (JIRA)

 [ 
https://issues.apache.org/jira/browse/HADOOP-11772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gopal V updated HADOOP-11772:
-
Attachment: sync-client-threads.png
sync-client-bt.png

> RPC Invoker relies on static ClientCache which has synchronized(this) blocks
> 
>
> Key: HADOOP-11772
> URL: https://issues.apache.org/jira/browse/HADOOP-11772
> Project: Hadoop Common
>  Issue Type: Sub-task
>  Components: ipc
>Reporter: Gopal V
> Attachments: sync-client-bt.png, sync-client-threads.png
>
>
> {code}
>   private static ClientCache CLIENTS=new ClientCache();
> ...
> this.client = CLIENTS.getClient(conf, factory);
> {code}
> Meanwhile in ClientCache
> {code}
> public synchronized Client getClient(Configuration conf,
>   SocketFactory factory, Class valueClass) {
> ...
>Client client = clients.get(factory);
> if (client == null) {
>   client = new Client(valueClass, conf, factory);
>   clients.put(factory, client);
> } else {
>   client.incCount();
> }
> {code}
> All invokers end up calling these methods, resulting in IPC clients choking 
> up.
> !sync-client-threads.png!
> !sync-client-bt.png!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)