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)

Reply via email to