cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Yotam Madem (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CXF-6825) Performance bottle neck due to synchronize block on each read
Date Wed, 09 Mar 2016 10:12:40 GMT

    [ https://issues.apache.org/jira/browse/CXF-6825?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15186902#comment-15186902
] 

Yotam Madem commented on CXF-6825:
----------------------------------

I was thinking about it again

Let's look at the code we had before my change:

  synchronized (THREAD_BUSSES) {
                h = THREAD_BUSSES.get(cur);
  }
   <<AT THIS POINT CONTEXT SWITCH CAN HAPPEN>>
  if (h == null || h.stale) {

In case that context switch happens at this point and clearDefaultBusForAnyThread is working,
it will lead to the exact same results as if we didn't use the synchronized block.

Still, the  "if (h == null || h.stale)" can happen during the operation of clearDefaultBusForAnyThread
because it is out of any synchronized block.


> Performance bottle neck due to synchronize block on each read
> -------------------------------------------------------------
>
>                 Key: CXF-6825
>                 URL: https://issues.apache.org/jira/browse/CXF-6825
>             Project: CXF
>          Issue Type: Bug
>          Components: Bus, JAX-RS
>    Affects Versions: 3.1.0, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.2.0, 3.1.6
>         Environment: All environments
>            Reporter: Yotam Madem
>             Fix For: 3.2.0, 3.1.6
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> In our (IBM MobileFirst foundation) performance tests it is possible to see that many
threads are stuck at:
> "LargeThreadPool-thread-1505" daemon prio=10 tid=0x00007f10f020b800 nid=0x31fc waiting
for monitor entry [0x00007f12bfffd000]
>    java.lang.Thread.State: BLOCKED (on object monitor)
> 	at org.apache.cxf.BusFactory.getThreadBusHolder(BusFactory.java:120)
> 	- waiting to lock <0x00000000c6b99020> (a java.util.WeakHashMap)
> 	at org.apache.cxf.BusFactory.getAndSetThreadDefaultBus(BusFactory.java:202)
>  
> (We use version 3.1.0)
> I did a test fix locally and it seems to resolve our problem so I submitted 2 pull requests:
> for 3.1.6: https://github.com/apache/cxf/pull/119
> for 3.2.0: https://github.com/apache/cxf/pull/120



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

Mime
View raw message