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
