[
https://issues.apache.org/jira/browse/CASSANDRA-2183?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12998409#comment-12998409
]
Hudson commented on CASSANDRA-2183:
-----------------------------------
Integrated in Cassandra-0.7 #309 (See
[https://hudson.apache.org/hudson/job/Cassandra-0.7/309/])
> memtable_flush_after_mins setting not working
> ---------------------------------------------
>
> Key: CASSANDRA-2183
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2183
> Project: Cassandra
> Issue Type: Bug
> Components: Core
> Affects Versions: 0.7.0
> Reporter: Ching-cheng
> Assignee: Jonathan Ellis
> Priority: Minor
> Fix For: 0.7.3
>
> Attachments: 2183.txt
>
> Original Estimate: 1h
> Remaining Estimate: 1h
>
> We have observed the behavior that memtable_flush_after_mins setting not
> working occasionally. After some testing and code digging, we finally
> figured out what going on.
> The memtable_flush_after_mins won't work on certain condition with current
> implementation in Cassandra.
> In org.apache.cassandra.db.Table, the scheduled flush task is setup by the
> following code during construction.
> ------------------------------------------------------------------------------------------------------------------
> int minCheckMs = Integer.MAX_VALUE;
>
> for (ColumnFamilyStore cfs : columnFamilyStores.values())
> {
> minCheckMs = Math.min(minCheckMs, cfs.getMemtableFlushAfterMins() * 60 *
> 1000);
> }
> Runnable runnable = new Runnable()
> {
> public void run()
> {
> for (ColumnFamilyStore cfs : columnFamilyStores.values())
> {
> cfs.forceFlushIfExpired();
> }
> }
> };
> flushTask = StorageService.scheduledTasks.scheduleWithFixedDelay(runnable,
> minCheckMs, minCheckMs, TimeUnit.MILLISECONDS);
> ------------------------------------------------------------------------------------------------------------------------------
> Now for our application, we will create a keyspacewithout without any
> columnfamily first. And only add needed columnfamily later depends on
> request.
> However, when keyspacegot created (without any columnfamily ), the above code
> will actually schedule a fixed delay flush check task with Integer.MAX_VALUE
> ms
> since there is no columnfamily yet.
> Later when you add columnfamily to this empty keyspace, the initCf() method
> in Table.java doesn't check whether the scheduled flush check task interval
> need
> to be updated or not. To fix this, we'd need to restart the Cassandra after
> columnfamily added into the keyspace.
> I would suggest that add additional logic in initCf() method to recreate a
> scheduled flush check task if needed.
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira