[
https://issues.apache.org/jira/browse/CASSANDRA-14062?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16277858#comment-16277858
]
Ariel Weisberg commented on CASSANDRA-14062:
--------------------------------------------
So how does the replayer interact with the rest of the database? What classes
does it access? It seems like that is an implicit interface that needs to be
factored out as well.
> Pluggable CommitLog
> -------------------
>
> Key: CASSANDRA-14062
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14062
> Project: Cassandra
> Issue Type: Improvement
> Components: Core
> Reporter: Rei Odaira
> Assignee: Rei Odaira
> Labels: features
> 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: [email protected]
For additional commands, e-mail: [email protected]