You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Brandon Williams (JIRA)" <ji...@apache.org> on 2009/07/28 18:22:14 UTC

[jira] Created: (CASSANDRA-320) Memtable sometimes not enqueued for flush

Memtable sometimes not enqueued for flush
-----------------------------------------

                 Key: CASSANDRA-320
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-320
             Project: Cassandra
          Issue Type: Bug
          Components: Core
         Environment: Debian lenny amd64 sun jdk 1.6
            Reporter: Brandon Williams


There appears to be a (rare) race condition with flushing memtables.   Occasionally, when Cassandra is in the process of flushing a table, another switch will occur.  The latter table will be added to memtablesPendingFlush in ColumnFamilyStore, but it will not be enqueued for flush and thus hang around forever.  Adding an else clause and a print statement to Memtable.java's enqueueFlush method reveals that the memtable is not being flushed because isFrozen_ is already true.

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


[jira] Commented: (CASSANDRA-320) Memtable sometimes not enqueued for flush

Posted by "Hudson (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-320?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12737084#action_12737084 ] 

Hudson commented on CASSANDRA-320:
----------------------------------

Integrated in Cassandra #152 (See [http://hudson.zones.apache.org/hudson/job/Cassandra/152/])
    combine switchMemtable and enqueueFlush so that they always operate on the same object.  move forceFlush guts from MT to CFS since it encapsulates better there
patch by jbellis; reviewed by Brandon Williams for 


> Memtable sometimes not enqueued for flush
> -----------------------------------------
>
>                 Key: CASSANDRA-320
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-320
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>         Environment: Debian lenny amd64 sun jdk 1.6
>            Reporter: Brandon Williams
>            Assignee: Jonathan Ellis
>         Attachments: 320.patch
>
>
> There appears to be a (rare) race condition with flushing memtables.   Occasionally, when Cassandra is in the process of flushing a table, another switch will occur.  The latter table will be added to memtablesPendingFlush in ColumnFamilyStore, but it will not be enqueued for flush and thus hang around forever.  Adding an else clause and a print statement to Memtable.java's enqueueFlush method reveals that the memtable is not being flushed because isFrozen_ is already true.

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


[jira] Updated: (CASSANDRA-320) Memtable sometimes not enqueued for flush

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-320?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jonathan Ellis updated CASSANDRA-320:
-------------------------------------

    Attachment: 320.patch

combine switchMemtable and enqueueFlush so that they always operate on the same object.  move forceFlush guts from MT to CFS since it encapsulates better there

> Memtable sometimes not enqueued for flush
> -----------------------------------------
>
>                 Key: CASSANDRA-320
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-320
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>         Environment: Debian lenny amd64 sun jdk 1.6
>            Reporter: Brandon Williams
>         Attachments: 320.patch
>
>
> There appears to be a (rare) race condition with flushing memtables.   Occasionally, when Cassandra is in the process of flushing a table, another switch will occur.  The latter table will be added to memtablesPendingFlush in ColumnFamilyStore, but it will not be enqueued for flush and thus hang around forever.  Adding an else clause and a print statement to Memtable.java's enqueueFlush method reveals that the memtable is not being flushed because isFrozen_ is already true.

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


[jira] Commented: (CASSANDRA-320) Memtable sometimes not enqueued for flush

Posted by "Brandon Williams (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/CASSANDRA-320?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12736651#action_12736651 ] 

Brandon Williams commented on CASSANDRA-320:
--------------------------------------------

+1

I'm no longer able to reproduce the issue with this patch after many millions of sustained inserts.

> Memtable sometimes not enqueued for flush
> -----------------------------------------
>
>                 Key: CASSANDRA-320
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-320
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>         Environment: Debian lenny amd64 sun jdk 1.6
>            Reporter: Brandon Williams
>         Attachments: 320.patch
>
>
> There appears to be a (rare) race condition with flushing memtables.   Occasionally, when Cassandra is in the process of flushing a table, another switch will occur.  The latter table will be added to memtablesPendingFlush in ColumnFamilyStore, but it will not be enqueued for flush and thus hang around forever.  Adding an else clause and a print statement to Memtable.java's enqueueFlush method reveals that the memtable is not being flushed because isFrozen_ is already true.

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


[jira] Resolved: (CASSANDRA-320) Memtable sometimes not enqueued for flush

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-320?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jonathan Ellis resolved CASSANDRA-320.
--------------------------------------

    Resolution: Fixed
      Assignee: Jonathan Ellis

> Memtable sometimes not enqueued for flush
> -----------------------------------------
>
>                 Key: CASSANDRA-320
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-320
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>         Environment: Debian lenny amd64 sun jdk 1.6
>            Reporter: Brandon Williams
>            Assignee: Jonathan Ellis
>         Attachments: 320.patch
>
>
> There appears to be a (rare) race condition with flushing memtables.   Occasionally, when Cassandra is in the process of flushing a table, another switch will occur.  The latter table will be added to memtablesPendingFlush in ColumnFamilyStore, but it will not be enqueued for flush and thus hang around forever.  Adding an else clause and a print statement to Memtable.java's enqueueFlush method reveals that the memtable is not being flushed because isFrozen_ is already true.

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