You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2009/12/09 06:02:32 UTC
svn commit: r888702 - in
/incubator/cassandra/trunk/src/java/org/apache/cassandra/db: CommitLog.java
RecoveryManager.java
Author: jbellis
Date: Wed Dec 9 05:02:32 2009
New Revision: 888702
URL: http://svn.apache.org/viewvc?rev=888702&view=rev
Log:
make CommitLog a true singleton instead of only "a singleton, except during log replay". patch by jbellis
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CommitLog.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/RecoveryManager.java
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CommitLog.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CommitLog.java?rev=888702&r1=888701&r2=888702&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CommitLog.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CommitLog.java Wed Dec 9 05:02:32 2009
@@ -73,12 +73,9 @@
{
private static volatile int SEGMENT_SIZE = 128*1024*1024; // roll after log gets this big
private static volatile CommitLog instance_;
- private static Lock lock_ = new ReentrantLock();
- private static Logger logger_ = Logger.getLogger(CommitLog.class);
- private static Map<String, CommitLogHeader> clHeaders_ = new HashMap<String, CommitLogHeader>();
-
- private ExecutorService executor;
-
+ private static final Lock lock_ = new ReentrantLock();
+ private static final Logger logger_ = Logger.getLogger(CommitLog.class);
+ private static final Map<String, CommitLogHeader> clHeaders_ = new HashMap<String, CommitLogHeader>();
public static final class CommitLogContext
{
@@ -147,7 +144,7 @@
if ( instance_ == null )
{
- instance_ = new CommitLog(false);
+ instance_ = new CommitLog();
}
}
finally
@@ -163,6 +160,7 @@
/* header for current commit log */
private CommitLogHeader clHeader_;
private BufferedRandomAccessFile logWriter_;
+ private final ExecutorService executor = new CommitLogExecutorService();
/*
* Generates a file name of the format CommitLog-<table>-<timestamp>.log in the
@@ -180,51 +178,47 @@
* param @ recoverymode - is commit log being instantiated in
* in recovery mode.
*/
- CommitLog(boolean recoveryMode) throws IOException
+ private CommitLog() throws IOException
{
- if (!recoveryMode)
+ setNextFileName();
+ logWriter_ = CommitLog.createWriter(logFile_);
+ writeCommitLogHeader();
+
+ if (DatabaseDescriptor.getCommitLogSync() == DatabaseDescriptor.CommitLogSync.periodic)
{
- executor = new CommitLogExecutorService();
- setNextFileName();
- logWriter_ = CommitLog.createWriter(logFile_);
- writeCommitLogHeader();
+ final Runnable syncer = new Runnable()
+ {
+ public void run()
+ {
+ try
+ {
+ sync();
+ }
+ catch (IOException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+ };
- if (DatabaseDescriptor.getCommitLogSync() == DatabaseDescriptor.CommitLogSync.periodic)
+ new Thread(new Runnable()
{
- final Runnable syncer = new Runnable()
+ public void run()
{
- public void run()
+ while (true)
{
+ executor.submit(syncer);
try
{
- sync();
+ Thread.sleep(DatabaseDescriptor.getCommitLogSyncPeriod());
}
- catch (IOException e)
+ catch (InterruptedException e)
{
throw new RuntimeException(e);
}
}
- };
-
- new Thread(new Runnable()
- {
- public void run()
- {
- while (true)
- {
- executor.submit(syncer);
- try
- {
- Thread.sleep(DatabaseDescriptor.getCommitLogSyncPeriod());
- }
- catch (InterruptedException e)
- {
- throw new RuntimeException(e);
- }
- }
- }
- }, "PERIODIC-COMMIT-LOG-SYNCER").start();
- }
+ }
+ }, "PERIODIC-COMMIT-LOG-SYNCER").start();
}
}
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/RecoveryManager.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/RecoveryManager.java?rev=888702&r1=888701&r2=888702&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/RecoveryManager.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/RecoveryManager.java Wed Dec 9 05:02:32 2009
@@ -62,7 +62,7 @@
Arrays.sort(files, new FileUtils.FileComparator());
logger_.info("Replaying " + StringUtils.join(files, ", "));
- new CommitLog(true).recover(files);
+ CommitLog.open().recover(files);
FileUtils.delete(files);
}
}