Rei Odaira created CASSANDRA-14062:
--------------------------------------

             Summary: Pluggable CommitLog
                 Key: CASSANDRA-14062
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-14062
             Project: Cassandra
          Issue Type: Improvement
          Components: Core
            Reporter: Rei Odaira
             Fix For: 4.x
         Attachments: pluggable-commitlog-src.patch, 
pluggable-commitlog-test.patch

This proposal is to make CommitLog pluggable, as discussed in [the Cassandra 
dev mailing 
list|https://lists.apache.org/thread.html/1936194d86f5954fa099ced9a0733458eb3249bff3fae3e03e2d1bd8@%3Cdev.cassandra.apache.org%3E].

We are developing a Cassandra plugin to store CommitLog on our low-latency 
Flash device (CAPI-Flash). To do that, the original CommitLog interface must be 
changed to allow plugins. Synching to CommitLog is one of the performance 
bottlenecks in Cassandra especially with batch commit. I think the pluggable 
CommitLog will allow other interesting alternatives, such as one using SPDK.

Our high-level design is similar to the CacheProvider framework
in org.apache.cassandra.cache:
* Introduce a new interface, ICommitLog, with methods like 
getCurrentPosition(), add(), shutdownBlocking(), etc.
* CommitLog implements ICommitLog.
* Introduce a new interface, CommitLogProvider, with a create() method, 
returning ICommitLog.
* Introduce a new class FileCommitLogProvider implementing CommitLogProvider, 
to return a singleton instance of CommitLog.
* Introduce a new property in cassandra.yaml, commitlog_class_name, which 
specifies what CommitLogProvider to use.  The default is FileCommitLogProvider.
* Introduce a new class, CommitLogHelper, that loads the class specified by the 
commitlog_class_name property, creates an instance, and stores it to 
CommitLogHelper.instance.
* Replace all of the references to CommitLog.instance with 
CommitLogHelper.instance.

Attached are two patches. "pluggable-commitlog-src.patch" is for changes in the 
src directory, and "pluggable-commitlog-test.patch" is for the test directory.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to