Ryan McGuire created CASSANDRA-6598:
---------------------------------------

             Summary: upgradesstables does not upgrade indexes.
                 Key: CASSANDRA-6598
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-6598
             Project: Cassandra
          Issue Type: Bug
            Reporter: Ryan McGuire


Upgrading a cluster from 1.1.12 -> 1.2.13 -> 2.0 HEAD fails due to 
upgradesstables not upgrading the index files.

To reproduce:

{code}
# Make sure ccm has all the versions we need:
ccm create -v git:cassandra-2.0 test
ccm remove 
ccm create -v git:cassandra-1.2.13 test
ccm remove

# Create a 1.1.12 cluster:
ccm create -v git:cassandra-1.1.12 test
# Set cluster partitioner:
perl -p -i -e 's/partitioner: null/partitioner: RandomPartitioner/gi' 
~/.ccm/test/cluster.conf

ccm populate -n 1
ccm start
ccm node1 stress -- --operation=INSERT --family-type=Standard --num-keys=10000 
--create-index=KEYS --compression=SnappyCompressor 
--compaction-strategy=LeveledCompactionStrategy
ccm flush

ccm node1 drain
ccm status
# Wait until node1 shows DOWN.

# Set cluster version:
perl -p -i -e 's/git_cassandra-1.1.12/git_cassandra-1.2.13/gi' 
~/.ccm/test/cluster.conf

# Upgrade node1:
ccm node1 updateconf
ccm node1 start

# Upgrade sstables:
~/.ccm/test/node1/bin/nodetool -p 7100 upgradesstables

ls ~/.ccm/test/node1/data/Keyspace1/Standard1/

# Note the versions on files. Data has been upgraded to version *ic* but 
indexes are left on version *hf*.


# Upgrade to 2.0:
ccm flush
ccm node1 drain
ccm status
# Wait until node1 shows DOWN.
# Set cluster version:
perl -p -i -e 's/git_cassandra-1.2.13/git_cassandra-2.0/gi' 
~/.ccm/test/cluster.conf
ccm node1 updateconf
{code}

On this last upgrade attempt, cassandra 2.0 complains that the version for the 
indexes is incorrect:

{code}
java.lang.RuntimeException: Can't open incompatible SSTable! Current version 
jb, found file: 
/home/ryan/.ccm/test/node1/data/Keyspace1/Standard1/Keyspace1-Standard1.Idx1-hf-1
        at 
org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:411)
        at 
org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:393)
        at 
org.apache.cassandra.db.index.AbstractSimplePerColumnSecondaryIndex.init(AbstractSimplePerColumnSecondaryIndex.java:52)
        at 
org.apache.cassandra.db.index.SecondaryIndexManager.addIndexedColumn(SecondaryIndexManager.java:274)
        at 
org.apache.cassandra.db.ColumnFamilyStore.<init>(ColumnFamilyStore.java:279)
        at 
org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:416)
        at 
org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:388)
        at org.apache.cassandra.db.Keyspace.initCf(Keyspace.java:309)
        at org.apache.cassandra.db.Keyspace.<init>(Keyspace.java:266)
        at org.apache.cassandra.db.Keyspace.open(Keyspace.java:110)
        at org.apache.cassandra.db.Keyspace.open(Keyspace.java:88)
        at 
org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:273)
        at 
org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:462)
        at 
org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:549)
{code}

The same can be done from 1.2 -> 2.0. The index files do not upgrade, however, 
their is not the same error, possibly because 2.0 is tolerant of version 1.2 
indexes?



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to