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

Daniel Kulp commented on AVRO-2051:
-----------------------------------


I just updated the pull request.   Basically, since the JsonProperties props 
field is only ever iterated across and added to (values never change or are 
removed), it was simple enough to create a ConcurrentHashMap subclass that can 
also maintain a linked list type thing to maintain the order.   This keeps the 
O(log N) lookups, O(log N) inserts, and O(N) iterator.  

> Thread contention accessing JsonProperties props
> ------------------------------------------------
>
>                 Key: AVRO-2051
>                 URL: https://issues.apache.org/jira/browse/AVRO-2051
>             Project: Avro
>          Issue Type: Bug
>          Components: java
>    Affects Versions: 1.8.2
>            Reporter: Daniel Kulp
>
> See 
> https://lists.apache.org/thread.html/dd34ab8439137a81a9de29ad4161f37b17638394cea0806765689976@%3Cuser.avro.apache.org%3E
> Basically, the getJsonProp method, being synchronized, is causing thread 
> contention issues when trying to share schemas between threads.    My 
> proposal (pull request forthcoming) is to treat "props" as an immutable map 
> and do a copy+add+swap for the addProp method.   This will make the addProp 
> call slower (particularly for large maps of props), but would make the reads 
> significantly faster as no locking will be needed.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to