avro-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (AVRO-2051) Thread contention accessing JsonProperties props
Date Fri, 08 Sep 2017 19:08:00 GMT

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

ASF GitHub Bot commented on AVRO-2051:

GitHub user dkulp opened a pull request:


    [AVRO-2051] Remove synchronization for JsonProperties.getJsonProp

    This change does two basic things:
    Makes "props" a private field and requires the subclasses to access it via the additional
methods. This allows some changing of the underlying implementation a bit easier.
    Change props to an ConcurrentHashMap with an extra ConcurrentLinkedQueue to maintain order.
With the (1) change, this is fairly simple. This keeps the O(log N) puts and lookups and a
simple entrySet iterator for quick iterations. Synchronized blocks are removed.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/dkulp/avro AVRO-2051

Alternatively you can review and apply these changes as the patch at:


To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #245
commit ef757c5aefd344a32e100736d419b4717d4dfd9f
Author: Daniel Kulp <dkulp@apache.org>
Date:   2017-07-17T19:08:10Z

    [AVRO-2051] Remove synchronization for JsonProperties.getJsonProp


> 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

View raw message