[ https://issues.apache.org/jira/browse/CASSANDRA-11055?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15290104#comment-15290104 ]
Adam Holmberg commented on CASSANDRA-11055: ------------------------------------------- I did miss this. Thanks. bq. Due to the API changes in the 3.0+ driver, I would prefer to apply this patch to the 2.7.2 branch rather than upgrade the bundled driver in 2.1 to 3.0 I agree it would be most straightforward to apply this after the 2.7.2 tag and package for integration. [Here|https://github.com/datastax/python-driver/compare/2.7.2-cassandra-2.1] is a branch with your patch applied ([refresher|https://github.com/datastax/python-driver/blob/master/README-dev.rst#packaging-for-cassandra] on how to roll with commit included). It looks like this change breaks [one of our *contrived* legacy metadata tests|https://github.com/datastax/python-driver/blob/2.7.2-cassandra-2.1/tests/integration/standard/test_metadata.py#L869-L1133], so we'll have to decide if the test of the change is wrong. I'm out of office W-F this week so I'm not sure I'll find the time to work on it. I will also take a look to see if this schema impacts legacy schema parsing in recent versions of the driver connecting to older versions of Cassandra. That should not be a blocker for this ticket though. Follow-on for the driver: [PYTHON-562|https://datastax-oss.atlassian.net/browse/PYTHON-562] > C*2.1 cqlsh DESCRIBE KEYSPACE ( or TABLE ) returns 'NoneType' object has no > attribute 'replace' > ----------------------------------------------------------------------------------------------- > > Key: CASSANDRA-11055 > URL: https://issues.apache.org/jira/browse/CASSANDRA-11055 > Project: Cassandra > Issue Type: Bug > Components: Tools > Reporter: Simon Ashley > Assignee: Stefania > Labels: cqlsh > Fix For: 2.1.x > > Attachments: 11055-driver-2.7.2.patch, data.tar.gz > > > 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'; -- This message was sent by Atlassian JIRA (v6.3.4#6332)