Clojure

the locking in MultiFn.java (synchronized methods) can cause lots of contention in multithreaded programs

Details

  • Type: Enhancement Enhancement
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Completed
  • Affects Version/s: None
  • Fix Version/s: Release 1.5
  • Component/s: None
  • Labels:
  • Patch:
    Code and Test
  • Approval:
    Ok

Description

if you call a single multimethod a lot in multithreaded code you get lots of contention for the lock on the multimethod. this contention slows things down a lot.

this is due to getMethod being synchronized. it would be great if there was some fast non-locking path through the multimethod.

Activity

David Santiago made changes -
Field Original Value New Value
Attachment issue988-lockless-multifn.diff [ 11197 ]
Andy Fingerhut made changes -
Patch Code [ 10001 ]
Stuart Halloway made changes -
Approval Vetted [ 10003 ]
Fix Version/s Release 1.5 [ 10150 ]
Issue Type Defect [ 1 ] Enhancement [ 4 ]
David Santiago made changes -
Attachment issue988-lockless-multifn.diff [ 11197 ]
David Santiago made changes -
Stuart Sierra made changes -
Assignee Stuart Sierra [ stuart.sierra ]
Stuart Sierra made changes -
Patch Code [ 10001 ] Code and Test [ 10002 ]
Waiting On richhickey
Approval Vetted [ 10003 ] Screened [ 10004 ]
David Santiago made changes -
Rich Hickey made changes -
Fix Version/s Release 1.5 [ 10150 ]
Andy Fingerhut made changes -
Attachment clj-988-tests-only-patch-v1.txt [ 11498 ]
Rich Hickey made changes -
Approval Screened [ 10004 ] Ok [ 10007 ]
Fix Version/s Release 1.5 [ 10150 ]
Rich Hickey made changes -
Waiting On richhickey
Stuart Halloway made changes -
Resolution Completed [ 1 ]
Status Open [ 1 ] Closed [ 6 ]

People

Vote (10)
Watch (9)

Dates

  • Created:
    Updated:
    Resolved: