https://issues.apache.org/jira/browse/CASSANDRA-2183
<https://issues.apache.org/jira/browse/CASSANDRA-2183>Regards, Chen www.evidentsoftware.com On Thu, Feb 17, 2011 at 11:47 AM, Ching-Cheng Chen < [email protected]> wrote: > Certainly, I'll open a ticket to track this issue. > > Regards, > > Chen > > www.evidentsoftware.com > > > On Thu, Feb 17, 2011 at 11:42 AM, Jonathan Ellis <[email protected]>wrote: > >> Your analysis sounds correct to me. Can you open a ticket on >> https://issues.apache.org/jira/browse/CASSANDRA ? >> >> On Thu, Feb 17, 2011 at 10:17 AM, Ching-Cheng Chen >> <[email protected]> wrote: >> > 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 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. >> > Regards, >> > Chen >> > www.evidentsoftware.com >> >> >> >> -- >> Jonathan Ellis >> Project Chair, Apache Cassandra >> co-founder of Riptano, the source for professional Cassandra support >> http://riptano.com >> > > > > -- > www.evidentsoftware.com >
