There is no reason to change the RF on the system keyspace, it should probably 
not be allowed.

The system keyspace uses a LocalPartitioner and it's data is not replicated 
through the same mechanism as a user keyspace. 
 
Aaron
 
On 31 Mar 2011, at 10:22, Jeremy Stribling wrote:

> On 03/30/2011 02:54 PM, Jeremy Stribling wrote:
>> After restarting a Cassandra 0.7.2 node, the node catches an exception 
>> during initialization and refuses to start:
>> 
>> Caused by: org.apache.cassandra.config.ConfigurationException: Attempt to 
>> assign id to existing column family.
>>        at org.apache.cassandra.config.CFMetaData.map(CFMetaData.java:222)
>>        at 
>> org.apache.cassandra.config.DatabaseDescriptor.loadSchemas(DatabaseDescriptor.java:477)
>>  
>>        ... 2 more
>> 
>> Unlike a previous thread about this topic 
>> (http://www.mail-archive.com/user@cassandra.apache.org/msg09024.html), we 
>> are not trying to preserve the JVM across restarts.  The restart comes up in 
>> an entirely fresh JVM.  We are, however, embedding Cassandra in our 
>> application, but we're using the same steps used by AbstractCassandraDaemon 
>> to bring it up.
>> 
>> Looking briefly through the code, the only way I see that this can happen is 
>> if loadSchemas tries to load information about the system table from storage 
>> (because the system table can be created in CFMetaData from the earlier 
>> DatabaseDescriptor.getTableMetaData(Table.SYSTEM_TABLE).values() call).  Or 
>> I guess the data on disk could have multiple entries under the same key, but 
>> the system table issue seems more likely to me.  Unfortunately the logging 
>> is not specific enough for me to tell which key it is failing with, and I 
>> haven't been able to reproduce this yet.
>> 
>> One relevant piece of information might be that, before the restart, our 
>> application changed the replication factor of all the tables, including the 
>> system table:
>> 
>> 2011-03-29 23:09:39,194 291146 [MigrationStage:1] INFO 
>> org.apache.cassandra.db.migration.Migration  - Applying migration 
>> 9f371026-5a59-11e0-b23f-65ed1eced995 Update keyspace systemrep factor:1rep  
>> strategy:LocalStrategy{...} to systemrep factor:3rep 
>> strategy:LocalStrategy{...}
>> 
>> We're doing this in order to dynamically change the replication factor as 
>> new nodes are being added to the cluster (e.g., it starts off with one node 
>> and a repfactor of 1, and once there are three nodes, it increases the 
>> repfactor on all tables to 3).  Is it possible that migrations over the 
>> system table get written to disk in a way that would cause loadSchemas() 
>> during a restart to hit this exception?  Are we even allowed to change the 
>> replication factor of the system table?
>> 
> 
> I've confirmed that this happens when loading column family "IndexInfo" from 
> the table "system" during the loadSchemas() call.  Does anyone know if 
> there's a way to get around this?  Perhaps, like I theorized, it's not legit 
> to change the replication factor on the system table.
> 
> 

Reply via email to