[hibernate-issues] [Hibernate-JIRA] Resolved: (HHH-6296) Unnecessary lock in UpdateTimestampsCache

Gail Badner (JIRA) noreply at atlassian.com
Tue Aug 16 17:41:04 EDT 2011


     [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-6296?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gail Badner resolved HHH-6296.
------------------------------

    Resolution: Duplicate
      Assignee: Gail Badner

> Unnecessary lock in UpdateTimestampsCache
> -----------------------------------------
>
>                 Key: HHH-6296
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-6296
>             Project: Hibernate Core
>          Issue Type: Patch
>          Components: caching (L2)
>    Affects Versions: 3.6.1, 3.6.2, 3.6.3, 3.6.4
>         Environment: Hibernate 3.6.4
>            Reporter: Alexandre Thiel
>            Assignee: Gail Badner
>            Priority: Minor
>         Attachments: UpdateTimestampsCache.java.diff
>
>
> Non transactional queries call UpdateTimestmapsCache.invalidate method with an empty array parameter but still acquire a WriteLock which cause a performance bottle neck under heavy load.
> GNU-Diff Patch for org.hibernate.cache.UpdateTimestampsCache attached
> Thread dump example :
> "TP-Processor10" daemon prio=10 tid=0x00000000415cb800 nid=0x6803 waiting on condition [0x00007f1346594000]
>    java.lang.Thread.State: WAITING (parking)
> 	at sun.misc.Unsafe.park(Native Method)
> 	- parking to wait for  <0x00007f1370f6d1c0> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync)
> 	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
> 	at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:747)
> 	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:778)
> 	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1114)
> 	at java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock(ReentrantReadWriteLock.java:807)
> 	at org.hibernate.cache.UpdateTimestampsCache.invalidate(UpdateTimestampsCache.java:88)
> 	at org.hibernate.engine.ActionQueue$AfterTransactionCompletionProcessQueue.afterTransactionCompletion(ActionQueue.java:604)
> 	at org.hibernate.engine.ActionQueue.afterTransactionCompletion(ActionQueue.java:209)
> 	at org.hibernate.impl.SessionImpl.afterTransactionCompletion(SessionImpl.java:602)
> 	at org.hibernate.jdbc.JDBCContext.afterNontransactionalQuery(JDBCContext.java:292)
> 	at org.hibernate.impl.SessionImpl.afterOperation(SessionImpl.java:595)
> 	at org.hibernate.impl.SessionImpl.load(SessionImpl.java:993)
> 	at org.hibernate.impl.SessionImpl.load(SessionImpl.java:978)

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list