cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jeff Jirsa (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-14062) Pluggable CommitLog
Date Mon, 04 Dec 2017 18:42:00 GMT


Jeff Jirsa commented on CASSANDRA-14062:

When people have proposed pluggable components before (most notably the recent pluggable storage
engine), one of the big points raised was making sure the abstraction is proper, and not simply
a way to bypass what exists to plug in an alternative. 

Reviewers/committers, please don't review/commit this in a bubble - let's make sure we get
a few sets of eyes on the proposed abstraction and make sure it's a valid abstraction before
we progress into reviewing the code itself.

> Pluggable CommitLog
> -------------------
>                 Key: CASSANDRA-14062
>                 URL:
>             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
> 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

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message