You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "C. Scott Andreas (JIRA)" <ji...@apache.org> on 2018/11/18 18:04:02 UTC
[jira] [Updated] (CASSANDRA-10283) Create central class that
represents node's local data store
[ https://issues.apache.org/jira/browse/CASSANDRA-10283?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
C. Scott Andreas updated CASSANDRA-10283:
-----------------------------------------
Component/s: Core
> Create central class that represents node's local data store
> ------------------------------------------------------------
>
> Key: CASSANDRA-10283
> URL: https://issues.apache.org/jira/browse/CASSANDRA-10283
> Project: Cassandra
> Issue Type: Improvement
> Components: Core, Local Write-Read Paths
> Reporter: Yuki Morishita
> Priority: Minor
> Labels: refactoring
> Fix For: 4.x
>
>
> This is related to CASSANDRA-7837 which aims to take down static initializations and singletons. Instead of doing it all at once, we can / should conquer by dividing internal to several part as discussed in that ticket. I just throw in my thought to discuss further.
> The node local data store (commitlog, memtable, SSTable etc) is at the core of Cassandra, and I think it is good to start from here.
> The central class for local data store class (I refer it as {{CassandraDataStore}} from here) manages the following:
> * CommitLog
> * CacheService
> * IndexSummaryManager
> * Keyspace / ColumnFamilyStore
> * CompactionManager
> * Schema / SchemaKeyspace
> * MemtablePool
> and possibly others, basically those that don't use {{MessagingService}}. These classes won't have static initialization/accessors and singleton, as {{CassandraDataStore}} initializes and wires them as necessary. We also can take access to {{DatabaseDescriptor}} away from these classes as {{CassandraDataStore}} does initialization (but this can be done separately).
> Of course, even after this, we still need to have one singleton instance that is {{CassandraDataStore}} itself to be accessed from other modules, but it will eventually be gone as we take down other part of singletons.
> Benefits to do this includes:
> * More explicit startup and cleanup procedure. It is hard to tell what is initialized when right now, and sometimes it creates unpredected result.
> * Simpler unit test setup. We don't need to bootstrap messaging or gossip to test local only functionality.
> Even the scope of the change is limitted compare to CASSANDRA-7837, this needs a lot of effort still and change to the code is still huge. But I believe this is worth the shot, and I appreciate any feedbacks regarding feasibility.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org