[
https://issues.apache.org/jira/browse/CASSANDRA-14062?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16277778#comment-16277778
]
Rei Odaira commented on CASSANDRA-14062:
----------------------------------------
A commit log implementation that uses its own format is supposed to implement
its own replayer, as we do in our CAPI-Flash commit log (not included in the
patch). We do not abstract the replayer interface because a replayer is
dependent on and is encapsulated in the corresponding commit log
implementation. The only interface to the log replaying is ICommitLog's
recover() method.
I think it is a good idea to pass the version string to
CommitLogProvider.create(). Is FBUtilities.getReleaseVersionString() the
proper method to get the version string?
> 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]