[ 
https://issues.apache.org/jira/browse/CASSANDRA-9310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14542455#comment-14542455
 ] 

Kishan Karunaratne commented on CASSANDRA-9310:
-----------------------------------------------

The drivers team currently runs its entire test suite against C* 1.2, and will 
continue to do so until DSE 3.2.x (1.2 compatibility) becomes EOSL, which is 
planned for 11/13/2015. These new index tests will continue to break our test 
suite unless we patch C* 1.2. Alternatively, we could skip these tests for C* 
1.2 but that would mean these features will be untested.

> Table change response returns as keyspace change response
> ---------------------------------------------------------
>
>                 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
>            Assignee: Carl Yeksigian
>             Fix For: 2.1.x, 2.0.x
>
>         Attachments: 9310-1.2.txt, 9310-2.0.txt, 9310-2.1.txt
>
>
> 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. 
> Related to PYTHON-241: https://datastax-oss.atlassian.net/browse/PYTHON-241
> Test:
> {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}
> Output:
> {noformat}
> AssertionError: 'a_idx' unexpectedly found in {u'b_idx': 
> <cassandra.metadata.IndexMetadata object at 0x7f2dd87d4590>, u'a_idx': 
> <cassandra.metadata.IndexMetadata object at 0x7f2dd87d4a10>}
> {noformat}
> Debug log:
> {noformat}
> cassandra.connection: DEBUG: Message pushed from server: 
> <EventMessage(stream_id=-1, event_type=u'SCHEMA_CHANGE', 
> event_args={'keyspace': u'index_map_tests', 'change_type': u'CREATED', 
> 'table': u''}, trace_id=None)>
> cassandra.cluster: DEBUG: Refreshing schema in response to schema change. 
> Keyspace: index_map_tests; Table: , Type: None
> cassandra.cluster: DEBUG: [control connection] Waiting for schema agreement
> cassandra.cluster: DEBUG: [control connection] Schemas mismatched, trying 
> again
> cassandra.cluster: DEBUG: [control connection] Schemas mismatched, trying 
> again
> cassandra.cluster: DEBUG: [control connection] Schemas mismatched, trying 
> again
> cassandra.cluster: DEBUG: [control connection] Schemas match
> cassandra.cluster: DEBUG: [control connection] Waiting for schema agreement
> cassandra.cluster: DEBUG: [control connection] Fetched keyspace info for 
> index_map_tests, rebuilding metadata
> cassandra.cluster: DEBUG: [control connection] Schemas match
> cassandra.cluster: DEBUG: [control connection] Fetched keyspace info for 
> index_map_tests, rebuilding metadata
> cassandra.connection: DEBUG: Message pushed from server: 
> <EventMessage(stream_id=-1, event_type=u'SCHEMA_CHANGE', 
> event_args={'keyspace': u'index_map_tests', 'change_type': u'CREATED', 
> 'table': u'test_index_updates'}, trace_id=None)>
> cassandra.cluster: DEBUG: Refreshing schema in response to schema change. 
> Keyspace: index_map_tests; Table: test_index_updates, Type: None
> cassandra.cluster: DEBUG: [control connection] Waiting for schema agreement
> cassandra.cluster: DEBUG: [control connection] Schemas mismatched, trying 
> again
> cassandra.cluster: DEBUG: [control connection] Schemas mismatched, trying 
> again
> cassandra.cluster: DEBUG: [control connection] Schemas match
> cassandra.cluster: DEBUG: [control connection] Fetched table info for 
> index_map_tests.test_index_updates, rebuilding metadata
> cassandra.connection: DEBUG: Message pushed from server: 
> <EventMessage(stream_id=-1, event_type=u'SCHEMA_CHANGE', 
> event_args={'keyspace': u'index_map_tests', 'change_type': u'UPDATED', 
> 'table': u'test_index_updates'}, trace_id=None)>
> cassandra.cluster: DEBUG: Ignoring schedule_unique for already-scheduled 
> task: (<bound method ControlConnection.refresh_schema of 
> <cassandra.cluster.ControlConnection object at 0x7f9c6864fc90>>, 
> (u'index_map_tests', u'test_index_updates', None))
> cassandra.cluster: DEBUG: Refreshing schema in response to schema change. 
> Keyspace: index_map_tests; Table: test_index_updates, Type: None
> cassandra.cluster: DEBUG: [control connection] Waiting for schema agreement
> cassandra.cluster: DEBUG: [control connection] Schemas mismatched, trying 
> again
> cassandra.cluster: DEBUG: [control connection] Schemas mismatched, trying 
> again
> cassandra.cluster: DEBUG: [control connection] Schemas match
> cassandra.cluster: DEBUG: [control connection] Fetched table info for 
> index_map_tests.test_index_updates, rebuilding metadata
> cassandra.cluster: DEBUG: [control connection] Waiting for schema agreement
> cassandra.cluster: DEBUG: [control connection] Schemas match
> cassandra.cluster: DEBUG: [control connection] Fetched table info for 
> index_map_tests.test_index_updates, rebuilding metadata
> cassandra.connection: DEBUG: Message pushed from server: 
> <EventMessage(stream_id=-1, event_type=u'SCHEMA_CHANGE', 
> event_args={'keyspace': u'index_map_tests', 'change_type': u'UPDATED', 
> 'table': u'test_index_updates'}, trace_id=None)>
> cassandra.cluster: DEBUG: Refreshing schema in response to schema change. 
> Keyspace: index_map_tests; Table: test_index_updates, Type: None
> cassandra.cluster: DEBUG: [control connection] Waiting for schema agreement
> cassandra.cluster: DEBUG: [control connection] Schemas mismatched, trying 
> again
> cassandra.cluster: DEBUG: [control connection] Schemas mismatched, trying 
> again
> cassandra.cluster: DEBUG: [control connection] Schemas match
> cassandra.cluster: DEBUG: [control connection] Fetched table info for 
> index_map_tests.test_index_updates, rebuilding metadata
> cassandra.cluster: DEBUG: [control connection] Waiting for schema agreement
> cassandra.cluster: DEBUG: [control connection] Schemas match
> cassandra.cluster: DEBUG: [control connection] Fetched table info for 
> index_map_tests.test_index_updates, rebuilding metadata
> cassandra.cluster: DEBUG: Refreshing schema in response to schema change. 
> Keyspace: index_map_tests; Table: test_index_updates, Type: None
> cassandra.cluster: DEBUG: [control connection] Waiting for schema agreement
> cassandra.connection: DEBUG: Message pushed from server: 
> <EventMessage(stream_id=-1, event_type=u'SCHEMA_CHANGE', 
> event_args={'keyspace': u'index_map_tests', 'change_type': u'UPDATED', 
> 'table': u'test_index_updates'}, trace_id=None)>
> cassandra.cluster: DEBUG: [control connection] Schemas mismatched, trying 
> again
> cassandra.cluster: DEBUG: [control connection] Schemas mismatched, trying 
> again
> cassandra.cluster: DEBUG: [control connection] Schemas match
> cassandra.cluster: DEBUG: [control connection] Waiting for schema agreement
> cassandra.cluster: DEBUG: [control connection] Schemas match
> cassandra.cluster: DEBUG: [control connection] Fetched table info for 
> index_map_tests.test_index_updates, rebuilding metadata
> cassandra.cluster: DEBUG: [control connection] Fetched table info for 
> index_map_tests.test_index_updates, rebuilding metadata
> cassandra.connection: DEBUG: Message pushed from server: 
> <EventMessage(stream_id=-1, event_type=u'SCHEMA_CHANGE', 
> event_args={'keyspace': u'index_map_tests', 'change_type': u'UPDATED', 
> 'table': u'test_index_updates'}, trace_id=None)>
> cassandra.cluster: DEBUG: Refreshing schema in response to schema change. 
> Keyspace: index_map_tests; Table: , Type: None
> cassandra.cluster: DEBUG: [control connection] Waiting for schema agreement
> cassandra.cluster: DEBUG: [control connection] Schemas mismatched, trying 
> again
> cassandra.cluster: DEBUG: [control connection] Schemas match
> cassandra.cluster: DEBUG: [control connection] Fetched keyspace info for 
> index_map_tests, rebuilding metadata
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to