You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Jonathan Ellis (JIRA)" <ji...@apache.org> on 2009/05/12 22:24:45 UTC

[jira] Commented: (CASSANDRA-163) fix RackUnawareStrategyTest

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

Jonathan Ellis commented on CASSANDRA-163:
------------------------------------------

here is the problem

    void put(String key, ColumnFamily columnFamily, CommitLog.CommitLogContext cLogCtx) throws IOException
    {
        isDirty_ = true;
        executor_.submit(new Putter(key, columnFamily));
        if (isThresholdViolated())
        {
            enqueueFlush(cLogCtx);
        }
    }

(enqueueFlush is the one that swaps out this memtable for a new one in CFS and calls shutdown)

the problem is that we submit first and ask questions later, so we can clearly submit to this [old] memtable on one thread after another thread starts the shutdown.

the only option I see is going to back to the old double-checked-ish logic of checking threshold first, then recursing to resubmit if we switch memtables.  (overriding TPE.execute/addIfUnderMaximumPoolSize is not an option since liberal use of private variables is made.)

> fix RackUnawareStrategyTest
> ---------------------------
>
>                 Key: CASSANDRA-163
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-163
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>
> it's been failing for forever but it was in the wrong directory so testng didn't run it.  I've moved it to the right directory for the junit migration but commented out.

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