Fix race when opening ColumnFamilyStore; patch by yukim reviewed by jbellis for CASSANDRA-5350

This commit is contained in:
Yuki Morishita 2013-03-14 15:57:37 -05:00
parent 3346771a03
commit ffc9bece48
4 changed files with 6 additions and 11 deletions

View File

@ -6,6 +6,7 @@
* nodetool: ability to repair specific range (CASSANDRA-5280)
* Fix possible assertion triggered in SliceFromReadCommand (CASSANDRA-5284)
* cqlsh: Add inet type support on Windows (ipv4-only) (CASSANDRA-4801)
* Fix race when initializing ColumnFamilyStore (CASSANDRA-5350)
1.1.10

View File

@ -99,12 +99,6 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
public static final ExecutorService postFlushExecutor = new JMXEnabledThreadPoolExecutor("MemtablePostFlusher");
static
{
// (can block if flush queue fills up, so don't put on scheduledTasks)
StorageService.optionalTasks.scheduleWithFixedDelay(new MeteredFlusher(), 1000, 1000, TimeUnit.MILLISECONDS);
}
public final Table table;
public final String columnFamily;
public final CFMetaData metadata;

View File

@ -33,7 +33,7 @@ import org.slf4j.LoggerFactory;
import org.apache.cassandra.config.DatabaseDescriptor;
class MeteredFlusher implements Runnable
public class MeteredFlusher implements Runnable
{
private static Logger logger = LoggerFactory.getLogger(MeteredFlusher.class);

View File

@ -40,10 +40,7 @@ import org.apache.cassandra.config.CFMetaData;
import org.apache.cassandra.config.ConfigurationException;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.config.Schema;
import org.apache.cassandra.db.ColumnFamilyStore;
import org.apache.cassandra.db.Directories;
import org.apache.cassandra.db.SystemTable;
import org.apache.cassandra.db.Table;
import org.apache.cassandra.db.*;
import org.apache.cassandra.db.commitlog.CommitLog;
import org.apache.cassandra.db.compaction.CompactionManager;
import org.apache.cassandra.utils.CLibrary;
@ -258,6 +255,9 @@ public abstract class AbstractCassandraDaemon implements CassandraDaemon
};
StorageService.optionalTasks.schedule(runnable, 5 * 60, TimeUnit.SECONDS);
// MeteredFlusher can block if flush queue fills up, so don't put on scheduledTasks
StorageService.optionalTasks.scheduleWithFixedDelay(new MeteredFlusher(), 1000, 1000, TimeUnit.MILLISECONDS);
SystemTable.finishStartup();
// start server internals