cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Stupp (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (CASSANDRA-13271) Reduce lock contention on instance factories of ListType and SetType
Date Mon, 27 Feb 2017 19:33:45 GMT

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

Robert Stupp edited comment on CASSANDRA-13271 at 2/27/17 7:33 PM:
-------------------------------------------------------------------

The changes for {{ListType}} and {{SetType}} look good so far. However, you miss some similar
one in {{MapType}} and {{ReversedType}} plus the corresponding {{List/Set/MapSerializer}}
classes, that use the same pattern.
Can you provide a branch on GitHub instead of a patch file?

EDIT: Also {{DynamicCompositeType}}. You might also switch the pattern to something like this:
{code}
X t t = internMap.get(key);
if (t == null)
    t = internMap.computeIfAbsent(key, (key) -> ...);
{code}
In the rare case when an instance is missing, we can afford the extra overhead but favor the
cleaner code.


was (Author: snazy):
The changes for {{ListType}} and {{SetType}} look good so far. However, you miss some similar
one in {{MapType}} and {{ReversedType}} plus the corresponding {{List/Set/MapSerializer}}
classes, that use the same pattern.
Can you provide a branch on GitHub instead of a patch file?

EDIT: Also {{DynamicCompositeType}}. You might also switch the pattern to something like this:
{code}
X t t = internMap.get(key);
if (t == null)
    internMap.computeIfAbsent(key, (key) -> ...);
{code}
In the rare case when an instance is missing, we can afford the extra overhead but favor the
cleaner code.

> Reduce lock contention on instance factories of ListType and SetType
> --------------------------------------------------------------------
>
>                 Key: CASSANDRA-13271
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-13271
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: vincent royer
>            Priority: Minor
>              Labels: performance
>             Fix For: 4.x
>
>         Attachments: 0001-CASSANDRA-13271-singleton-factory-concurrency-opimiz.patch
>
>
> By doing some performance tests, i noticed that getInstance() in org.apache.cassandra.db.marshal.ListType
and SetType could suffer from lock contention on the singleton factory getInstance(). Here
is a proposal to reduce lock contention by using a ConcurrentMap and the putIfAbsent method
rather than a synchronized method.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message