You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Sylvain Lebresne (JIRA)" <ji...@apache.org> on 2015/01/07 14:55:34 UTC

[jira] [Commented] (CASSANDRA-8572) CQLSSTableWriter shouldn't trigger the start of the commit log

    [ 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)