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