You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Josh McKenzie (Jira)" <ji...@apache.org> on 2024/12/10 20:08:00 UTC

[jira] [Updated] (CASSANDRA-14062) Pluggable CommitLog

     [ https://issues.apache.org/jira/browse/CASSANDRA-14062?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Josh McKenzie updated CASSANDRA-14062:
--------------------------------------
    Status: Triage Needed  (was: Awaiting Feedback)

> Pluggable CommitLog
> -------------------
>
>                 Key: CASSANDRA-14062
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-14062
>             Project: Apache Cassandra
>          Issue Type: Improvement
>          Components: Legacy/Core
>            Reporter: Rei Odaira
>            Assignee: Rei Odaira
>            Priority: Normal
>              Labels: features
>             Fix For: 5.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
(v8.20.10#820010)

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