cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jonathan Ellis (JIRA)" <j...@apache.org>
Subject [jira] Commented: (CASSANDRA-2037) Unsafe Multimap Access in MessagingService
Date Mon, 24 Jan 2011 14:24:44 GMT

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

Jonathan Ellis commented on CASSANDRA-2037:
-------------------------------------------

Thibaut, are you doing reads, writes, or both?

> Unsafe Multimap Access in MessagingService
> ------------------------------------------
>
>                 Key: CASSANDRA-2037
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-2037
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.7.0
>            Reporter: Erik Onnen
>            Priority: Critical
>
> MessagingSerice is a system singleton with a static Multimap field targets. Multimaps
are not thread safe but no attempt is made to synchronize access to that field. Multimap ultimately
uses the standard java HashMap which is susceptible to a race condition where threads will
get stuck during a get operation yielding multiple threads similar to the following stack:
> "pool-1-thread-6451" prio=10 tid=0x00007fa5242c9000 nid=0x10f4 runnable [0x00007fa52fde4000]
>    java.lang.Thread.State: RUNNABLE
> 	at java.util.HashMap.get(HashMap.java:303)
> 	at com.google.common.collect.AbstractMultimap.getOrCreateCollection(AbstractMultimap.java:205)
> 	at com.google.common.collect.AbstractMultimap.put(AbstractMultimap.java:194)
> 	at com.google.common.collect.AbstractListMultimap.put(AbstractListMultimap.java:72)
> 	at com.google.common.collect.ArrayListMultimap.put(ArrayListMultimap.java:60)
> 	at org.apache.cassandra.net.MessagingService.sendRR(MessagingService.java:303)
> 	at org.apache.cassandra.service.StorageProxy.strongRead(StorageProxy.java:353)
> 	at org.apache.cassandra.service.StorageProxy.readProtocol(StorageProxy.java:229)
> 	at org.apache.cassandra.thrift.CassandraServer.readColumnFamily(CassandraServer.java:98)
> 	at org.apache.cassandra.thrift.CassandraServer.get(CassandraServer.java:289)
> 	at org.apache.cassandra.thrift.Cassandra$Processor$get.process(Cassandra.java:2655)
> 	at org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:2555)
> 	at org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:167)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> 	at java.lang.Thread.run(Thread.java:662)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message