cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matthew F. Dennis (JIRA)" <j...@apache.org>
Subject [jira] Updated: (CASSANDRA-1160) race with insufficiently constructed Gossiper
Date Mon, 07 Jun 2010 17:51:47 GMT

     [ https://issues.apache.org/jira/browse/CASSANDRA-1160?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Matthew F. Dennis updated CASSANDRA-1160:
-----------------------------------------

    Attachment: 0001-cassandra-0.6-1160.patch

moving start() to Gossiper.<init> causes failures in testClientOnlyMode and I didn't
see a way to readily make client/server mode available to Gossiper.<init>

0001-cassandra-0.6-1160.patch delays creation of the Gossiper instance until start is called.
 Any thread attempting to obtain a reference to Gossiper before it is started busy waits until
it is fully initialized.

I'm not sure I actually like this solution, but thought I would submit for comments/feedback.

If we end up taking this solution, I'll submit a patch for trunk as well.

> race with insufficiently constructed Gossiper
> ---------------------------------------------
>
>                 Key: CASSANDRA-1160
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1160
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Jonathan Ellis
>            Assignee: Matthew F. Dennis
>            Priority: Minor
>             Fix For: 0.6.3
>
>         Attachments: 0001-cassandra-0.6-1160.patch
>
>
> Gossiper.start needs to be integrated into the constructor.  Currently you can have threads
using the gossiper instance before start finishes (or even starts?), resulting in tracebacks
like this:
> ERROR [GMFD:1] 2010-06-02 10:45:49,878 CassandraDaemon.java (line 78) Fatal exception
in thread Thread[GMFD:1,5,main]
> java.lang.AssertionError
> 	at org.apache.cassandra.net.Header.<init>(Header.java:56)
> 	at org.apache.cassandra.net.Header.<init>(Header.java:74)
> 	at org.apache.cassandra.net.Message.<init>(Message.java:58)
> 	at org.apache.cassandra.gms.Gossiper.makeGossipDigestAckMessage(Gossiper.java:294)
> 	at org.apache.cassandra.gms.Gossiper$GossipDigestSynVerbHandler.doVerb(Gossiper.java:935)
> 	at org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:40)
> 	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:619)
> ERROR [GMFD:2] 2010-06-02 10:45:49,880 CassandraDaemon.java (line 78) Fatal exception
in thread Thread[GMFD:2,5,main]
> java.lang.AssertionError
> 	at org.apache.cassandra.net.Header.<init>(Header.java:56)
> 	at org.apache.cassandra.net.Header.<init>(Header.java:74)
> 	at org.apache.cassandra.net.Message.<init>(Message.java:58)
> 	at org.apache.cassandra.gms.Gossiper.makeGossipDigestAckMessage(Gossiper.java:294)
> 	at org.apache.cassandra.gms.Gossiper$GossipDigestSynVerbHandler.doVerb(Gossiper.java:935)
> 	at org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:40)
> 	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:619)

-- 
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