Kishan Karunaratne created CASSANDRA-9310:
---------------------------------------------
Summary: Table change event returns as keyspace change event
Key: CASSANDRA-9310
URL: https://issues.apache.org/jira/browse/CASSANDRA-9310
Project: Cassandra
Issue Type: Bug
Environment: C* 1.2.19 and 2.0.14 | python-driver master (upcoming v.
2.6)
Reporter: Kishan Karunaratne
When an index is dropped, its existence is still persisted across the keyspace
metadata. This happens because the response to drop the index from the metadata
is never received, as a keyspace change response is (incorrectly) received by
the driver instead of a table change response.
{noformat}
self.session.execute("CREATE TABLE %s (k int PRIMARY KEY, a int)" %
self.table_name)
ks_meta = self.cluster.metadata.keyspaces[self.keyspace_name]
table_meta = ks_meta.tables[self.table_name]
self.assertNotIn('a_idx', ks_meta.indexes)
self.assertNotIn('b_idx', ks_meta.indexes)
self.assertNotIn('a_idx', table_meta.indexes)
self.assertNotIn('b_idx', table_meta.indexes)
self.session.execute("CREATE INDEX a_idx ON %s (a)" % self.table_name)
self.session.execute("ALTER TABLE %s ADD b int" % self.table_name)
self.session.execute("CREATE INDEX b_idx ON %s (b)" % self.table_name)
ks_meta = self.cluster.metadata.keyspaces[self.keyspace_name]
table_meta = ks_meta.tables[self.table_name]
self.assertIsInstance(ks_meta.indexes['a_idx'], IndexMetadata)
self.assertIsInstance(ks_meta.indexes['b_idx'], IndexMetadata)
self.assertIsInstance(table_meta.indexes['a_idx'], IndexMetadata)
self.assertIsInstance(table_meta.indexes['b_idx'], IndexMetadata)
# both indexes updated when index dropped
self.session.execute("DROP INDEX a_idx")
ks_meta = self.cluster.metadata.keyspaces[self.keyspace_name]
table_meta = ks_meta.tables[self.table_name]
self.assertNotIn('a_idx', ks_meta.indexes)
{noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)