Claudio Atzori created CASSANDRA-4281:
-----------------------------------------

             Summary: schema agreement accross the nodes
                 Key: CASSANDRA-4281
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-4281
             Project: Cassandra
          Issue Type: Bug
          Components: Core
    Affects Versions: 1.1.0
            Reporter: Claudio Atzori


I'm creating a cluster of 2 nodes (for now), of cassandra 1.1.0, installed on 
Ubuntu 10.04

root@node2.d:/etc/cassandra# uname -a
Linux node2 2.6.32-5-xen-amd64 #1 SMP Fri Sep 9 22:23:19 UTC 2011 x86_64 
GNU/Linux

with all defaults in cassandra.yaml, except for:
cluster_name
initial_token (I set a 50/50 balancing between the 2 nodes)
seeds list (one of the 2 nodes ip address)
#listen_address: localhost
#rpc_address: localhost

The 2 nodes recognize each other

root@node2.d:/etc/cassandra# nodetool ring
Address         DC          Rack        Status State   Load            
Effective-Owership  Token                                       
                                                                                
           85070591730234615865843651857942052864      
146.48.122.136  datacenter1 rack1       Up     Normal  28.62 KB        100.00%  
           0}}                                           
146.48.122.137  datacenter1 rack1       Up     Normal  21.79 KB        100.00%  
           85070591730234615865843651857942052864

But, I'm experiencing an issue. I'm trying to define a new keyspace from the 
cqlsh.

cqlsh> CREATE KEYSPACE efg_mr WITH strategy_class = 'SimpleStrategy' AND 
strategy_options:replication_factor=2 ;

..and ok, the new keyspace is seen accross the 2 nodes. 

cqlsh> DESCRIBE KEYSPACE efg_mr ;

CREATE KEYSPACE efg_mr WITH strategy_class = 'SimpleStrategy'
  AND strategy_options:replication_factor = '2';

now I wanted to define a column family:

cqlsh> CREATE COLUMNFAMILY records (KEY varchar PRIMARY KEY, title varchar, 
year varchar) ;

at this point I noticed an exception in /var/log/cassandra/output.log

ERROR 14:28:47,475 Exception in thread Thread[MigrationStage:1,5,main]
java.lang.RuntimeException: java.nio.charset.MalformedInputException: Input 
length = 1
        at 
org.apache.cassandra.cql3.ColumnIdentifier.<init>(ColumnIdentifier.java:50)
        at 
org.apache.cassandra.cql3.CFDefinition.getKeyId(CFDefinition.java:125)
        at org.apache.cassandra.cql3.CFDefinition.<init>(CFDefinition.java:59)
        at 
org.apache.cassandra.config.CFMetaData.updateCfDef(CFMetaData.java:1278)
        at org.apache.cassandra.config.CFMetaData.keyAlias(CFMetaData.java:221)
        at 
org.apache.cassandra.config.CFMetaData.fromSchemaNoColumns(CFMetaData.java:1162)
        at 
org.apache.cassandra.config.CFMetaData.fromSchema(CFMetaData.java:1190)
        at 
org.apache.cassandra.config.KSMetaData.deserializeColumnFamilies(KSMetaData.java:291)
        at 
org.apache.cassandra.db.DefsTable.mergeColumnFamilies(DefsTable.java:358)
        at org.apache.cassandra.db.DefsTable.mergeSchema(DefsTable.java:270)
        at 
org.apache.cassandra.db.DefsTable.mergeRemoteSchema(DefsTable.java:248)
        at 
org.apache.cassandra.db.DefinitionsUpdateVerbHandler$1.runMayThrow(DefinitionsUpdateVerbHandler.java:48)
        at 
org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:30)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
Caused by: java.nio.charset.MalformedInputException: Input length = 1
        at java.nio.charset.CoderResult.throwException(CoderResult.java:260)
        at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:781)
        at 
org.apache.cassandra.utils.ByteBufferUtil.string(ByteBufferUtil.java:163)
        at 
org.apache.cassandra.utils.ByteBufferUtil.string(ByteBufferUtil.java:120)
        at 
org.apache.cassandra.cql3.ColumnIdentifier.<init>(ColumnIdentifier.java:46)
        ... 18 more

and from now on, only one of the 2 nodes knows about the new column family, the 
other one somehow hasn't been informed, or didn't complete the agreement on the 
new column family.

Since I'm creating a new cluster I tried several times to drop all the data (rm 
-rf /var/lib/cassandra/*) and starting over again. But sometimes this error 
happens on the column family definition, sometimes after a CREATE INDEX command.

Am I doing something wrong?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to