[ 
https://issues.apache.org/jira/browse/CASSANDRA-8572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14267648#comment-14267648
 ] 

Sylvain Lebresne commented on CASSANDRA-8572:
---------------------------------------------

I've edited the title to reflect what the actual problem to solve is. 
Basically, CQLSSTableWriter should ideally be usable as a very simple simple 
library without triggering any Cassandra specific initialisation (including 
starting the commit log, but also loading the yaml file for instance, both of 
which are the case today due to static initialisation mess).

What is the simplest way to solve that problem is is up for discussion though 
and making {{Keyspace.open}} not initialize the commit log may or may not be 
part of it (it could be that it's simpler to make CQLSSTableWriter not call 
{{Keyspace.open}} in the first place). Let's also not focus just on the commit 
log: the fact that the you need to have a proper yaml in the classpath to use 
CQLSSTableWriter is as much an important problem as the commit log issue.

> CQLSSTableWriter shouldn't trigger the start of the commit log
> --------------------------------------------------------------
>
>                 Key: CASSANDRA-8572
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8572
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Benjamin Lerer
>            Priority: Minor
>
> Due to static dependencies, calling {{Keyspace.open}} trigger the creation of 
> the {{CommitLog}} singleton which in turn trigger the start of all the 
> threads used by the {{CommitLog}}.
> For simple client like {{CQLSSTableWriter}} that dependency is an issue as it 
> can prevent the JVM from shutting down if the CommitLog is not shutdown 
> explicitly. 
>   
> The following stacktrace show the initialization chain that trigger the 
> {{CommitLog}}:
> {code}
> CommitLogSegmentManager.<init>() line: 173    
> CommitLog.<init>() line: 70   
> CommitLog.<clinit>() line: 55 
> Memtable.<init>(ColumnFamilyStore) line: 66   
> DataTracker.init() line: 378  
> DataTracker.<init>(ColumnFamilyStore) line: 54        
> ColumnFamilyStore.<init>(Keyspace, String, IPartitioner, int, CFMetaData, 
> Directories, boolean) line: 281     
> ColumnFamilyStore.createColumnFamilyStore(Keyspace, String, IPartitioner, 
> CFMetaData, boolean) line: 443      
> ColumnFamilyStore.createColumnFamilyStore(Keyspace, String, boolean) line: 
> 414        
> Keyspace.initCf(UUID, String, boolean) line: 327      
> Keyspace.<init>(String, boolean) line: 280    
> Keyspace.open(String, Schema, boolean) line: 122      
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to