Details
-
Bug
-
Status: Resolved
-
Normal
-
Resolution: Fixed
-
Normal
Description
C* 2.1 cqlsh DESCRIBE KEYSPACE ( or TABLE ) returns:
'NoneType' object has no attribute 'replace'
for thrift CF's originally created in C* 1.2.
Repro:
1. Create cf in cassandra-cli on C* 1.2.x (1.2.9 was used here)
[default@ks1] CREATE COLUMN FAMILY t1 ... WITH column_type='Standard' ... AND comparator='CompositeType(org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.UTF8Type)' ... AND default_validation_class='UTF8Type' ... AND key_validation_class='UTF8Type' ... AND read_repair_chance=0.1 ... AND dclocal_read_repair_chance=0.0 ... AND gc_grace=864000 ... AND min_compaction_threshold=4 ... AND max_compaction_threshold=32 ... AND replicate_on_write=true ... AND compaction_strategy='LeveledCompactionStrategy' AND compaction_strategy_options={sstable_size_in_mb: 32} ... AND caching='KEYS_ONLY' ... AND compression_options={sstable_compression:SnappyCompressor, chunk_length_kb:64}; qlsh> describe keyspace ks1; CREATE KEYSPACE ks1 WITH replication = { 'class': 'NetworkTopologyStrategy', 'datacenter1': '1' }; USE ks1; CREATE TABLE t1 ( key text, column1 text, column2 text, value text, PRIMARY KEY (key, column1, column2) ) WITH COMPACT STORAGE AND bloom_filter_fp_chance=0.100000 AND caching='KEYS_ONLY' AND comment='' AND dclocal_read_repair_chance=0.000000 AND gc_grace_seconds=864000 AND read_repair_chance=0.100000 AND replicate_on_write='true' AND populate_io_cache_on_flush='false' AND compaction={'sstable_size_in_mb': '32', 'class': 'LeveledCompactionStrategy'} AND compression={'chunk_length_kb': '64', 'sstable_compression': 'SnappyCompressor'}; cqlsh> select keyspace_name, columnfamily_name,column_aliases,key_aliases from system.schema_columnfamilies where keyspace_name= 'ks1'; keyspace_name | columnfamily_name | column_aliases | key_aliases ---------------+-------------------+----------------+------------- ks1 | t1 | [] | [] 2/ Upgrade -> C* 2.0.9 -> nodetool upgradesstables -a At this stage , DESCRIBE in cqlsh is working 3/ Upgrade -> C* 2.1.12 -> nodetool upgradesstables -a DESCRIBE now fails: cqlsh> describe table ks1.t1; 'NoneType' object has no attribute 'replace' cqlsh> describe keyspace ks1; 'NoneType' object has no attribute 'replace'
You can workaround by manually updating system.schema_columnfamilies
UPDATE system.schema_columnfamilies SET column_aliases ='["column1","column2"]' WHERE keyspace_name = 'ks1' AND columnfamily_name = 't1';
Once you exit and restart cqlsh, DESCRIBE is not working as per C* 1.2
cqlsh> describe keyspace ks1; CREATE KEYSPACE ks1 WITH replication = {'class': 'NetworkTopologyStrategy', 'datacenter1': '1'} AND durable_writes = true; CREATE TABLE ks1.t1 ( key text, column1 text, column2 text, value text, PRIMARY KEY (key, column1, column2) ) WITH COMPACT STORAGE AND CLUSTERING ORDER BY (column1 ASC, column2 ASC) AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}' AND comment = '' AND compaction = {'sstable_size_in_mb': '32', 'class': 'org.apache.cassandra.db.compaction.LeveledCompactionStrategy'} AND compression = {'chunk_length_kb': '64', 'sstable_compression': 'org.apache.cassandra.io.compress.SnappyCompressor'} AND dclocal_read_repair_chance = 0.0 AND default_time_to_live = 0 AND gc_grace_seconds = 864000 AND max_index_interval = 2048 AND memtable_flush_period_in_ms = 0 AND min_index_interval = 128 AND read_repair_chance = 0.1 AND speculative_retry = '99.0PERCENTILE';