[jira] [Commented] (CASSANDRA-11609) cassandra won't start with schema complaint that does not appear to be valid
[ https://issues.apache.org/jira/browse/CASSANDRA-11609?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15250937#comment-15250937 ] Tyler Hobbs commented on CASSANDRA-11609: - The root of the problem was that in the 2.x schema, implicitly frozen types (like nested UDTs) were not wrapped in {{FrozenType()}}. Before CASSANDRA-7423, these were still implicitly frozen, so the 2.x -> 3.x migration correctly converted them. After 7423 this no longer happens, so they need to be explicitly converted as part of the schema migration. Migrations from 2.x -> 3.0.x -> 3.x should be fine without this patch. I attempted to extend {{LegacySchemaMigratorTest}} to cover this, but unfortunately it doesn't seem possible to create a table that uses a UDT within the test framework. So, I think we'll need to continue to rely on the existing upgrade tests for coverage here. Patch and pending CI runs: ||branch||testall||dtest|| |[CASSANDRA-11609|https://github.com/thobbs/cassandra/tree/CASSANDRA-11609]|[testall|http://cassci.datastax.com/view/Dev/view/thobbs/job/thobbs-CASSANDRA-11609-testall]|[dtest|http://cassci.datastax.com/view/Dev/view/thobbs/job/thobbs-CASSANDRA-11609-dtest]| [~blerer] would you mind reviewing? > cassandra won't start with schema complaint that does not appear to be valid > > > Key: CASSANDRA-11609 > URL: https://issues.apache.org/jira/browse/CASSANDRA-11609 > Project: Cassandra > Issue Type: Bug >Reporter: Russ Hatch >Assignee: Tyler Hobbs > Fix For: 3.x > > > This was found in the upgrades user_types_test. > Can also be repro'd with ccm. > To repro using ccm: > Create a 1 node cluster on 2.2.x > Create this schema: > {noformat} > create keyspace test2 with replication = {'class':'SimpleStrategy', > 'replication_factor':1}; > use test2; > CREATE TYPE address ( > street text, > city text, > zip_code int, > phones set > ); > CREATE TYPE fullname ( > irstname text, > astname text > ); > CREATE TABLE users ( > d uuid PRIMARY KEY, > ame frozen, > ddresses map> ); > {noformat} > Upgrade the single node to trunk, attempt to start the node up. Start will > fail with this exception: > {noformat} > ERROR [main] 2016-04-19 11:33:19,218 CassandraDaemon.java:704 - Exception > encountered during startup > org.apache.cassandra.exceptions.InvalidRequestException: Non-frozen UDTs are > not allowed inside collections: map > at > org.apache.cassandra.cql3.CQL3Type$Raw$RawCollection.throwNestedNonFrozenError(CQL3Type.java:686) > ~[main/:na] > at > org.apache.cassandra.cql3.CQL3Type$Raw$RawCollection.prepare(CQL3Type.java:652) > ~[main/:na] > at > org.apache.cassandra.cql3.CQL3Type$Raw$RawCollection.prepareInternal(CQL3Type.java:644) > ~[main/:na] > at > org.apache.cassandra.schema.CQLTypeParser.parse(CQLTypeParser.java:53) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.createColumnFromRow(SchemaKeyspace.java:1022) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.lambda$fetchColumns$12(SchemaKeyspace.java:1006) > ~[main/:na] > at java.lang.Iterable.forEach(Iterable.java:75) ~[na:1.8.0_77] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchColumns(SchemaKeyspace.java:1006) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchTable(SchemaKeyspace.java:960) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchTables(SchemaKeyspace.java:939) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspace(SchemaKeyspace.java:902) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspacesWithout(SchemaKeyspace.java:879) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchNonSystemKeyspaces(SchemaKeyspace.java:867) > ~[main/:na] > at org.apache.cassandra.config.Schema.loadFromDisk(Schema.java:134) > ~[main/:na] > at org.apache.cassandra.config.Schema.loadFromDisk(Schema.java:124) > ~[main/:na] > at > org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:229) > [main/:na] > at > org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:558) > [main/:na] > at > org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:687) > [main/:na] > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (CASSANDRA-11609) cassandra won't start with schema complaint that does not appear to be valid
[ https://issues.apache.org/jira/browse/CASSANDRA-11609?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15250492#comment-15250492 ] Tyler Hobbs commented on CASSANDRA-11609: - This was probably triggered by CASSANDRA-7423, I'll look into it. > cassandra won't start with schema complaint that does not appear to be valid > > > Key: CASSANDRA-11609 > URL: https://issues.apache.org/jira/browse/CASSANDRA-11609 > Project: Cassandra > Issue Type: Bug >Reporter: Russ Hatch >Assignee: Tyler Hobbs > > This was found in the upgrades user_types_test. > Can also be repro'd with ccm. > To repro using ccm: > Create a 1 node cluster on 2.2.x > Create this schema: > {noformat} > create keyspace test2 with replication = {'class':'SimpleStrategy', > 'replication_factor':1}; > use test2; > CREATE TYPE address ( > street text, > city text, > zip_code int, > phones set > ); > CREATE TYPE fullname ( > irstname text, > astname text > ); > CREATE TABLE users ( > d uuid PRIMARY KEY, > ame frozen, > ddresses map> ); > {noformat} > Upgrade the single node to trunk, attempt to start the node up. Start will > fail with this exception: > {noformat} > ERROR [main] 2016-04-19 11:33:19,218 CassandraDaemon.java:704 - Exception > encountered during startup > org.apache.cassandra.exceptions.InvalidRequestException: Non-frozen UDTs are > not allowed inside collections: map > at > org.apache.cassandra.cql3.CQL3Type$Raw$RawCollection.throwNestedNonFrozenError(CQL3Type.java:686) > ~[main/:na] > at > org.apache.cassandra.cql3.CQL3Type$Raw$RawCollection.prepare(CQL3Type.java:652) > ~[main/:na] > at > org.apache.cassandra.cql3.CQL3Type$Raw$RawCollection.prepareInternal(CQL3Type.java:644) > ~[main/:na] > at > org.apache.cassandra.schema.CQLTypeParser.parse(CQLTypeParser.java:53) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.createColumnFromRow(SchemaKeyspace.java:1022) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.lambda$fetchColumns$12(SchemaKeyspace.java:1006) > ~[main/:na] > at java.lang.Iterable.forEach(Iterable.java:75) ~[na:1.8.0_77] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchColumns(SchemaKeyspace.java:1006) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchTable(SchemaKeyspace.java:960) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchTables(SchemaKeyspace.java:939) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspace(SchemaKeyspace.java:902) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspacesWithout(SchemaKeyspace.java:879) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchNonSystemKeyspaces(SchemaKeyspace.java:867) > ~[main/:na] > at org.apache.cassandra.config.Schema.loadFromDisk(Schema.java:134) > ~[main/:na] > at org.apache.cassandra.config.Schema.loadFromDisk(Schema.java:124) > ~[main/:na] > at > org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:229) > [main/:na] > at > org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:558) > [main/:na] > at > org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:687) > [main/:na] > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (CASSANDRA-11609) cassandra won't start with schema complaint that does not appear to be valid
[ https://issues.apache.org/jira/browse/CASSANDRA-11609?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15250296#comment-15250296 ] Russ Hatch commented on CASSANDRA-11609: CASSANDRA-11613 started happening recently as well (and involves upgrading UDT schema) so I wonder if they could have the same cause. > cassandra won't start with schema complaint that does not appear to be valid > > > Key: CASSANDRA-11609 > URL: https://issues.apache.org/jira/browse/CASSANDRA-11609 > Project: Cassandra > Issue Type: Bug >Reporter: Russ Hatch > > This was found in the upgrades user_types_test. > Can also be repro'd with ccm. > To repro using ccm: > Create a 1 node cluster on 2.2.x > Create this schema: > {noformat} > create keyspace test2 with replication = {'class':'SimpleStrategy', > 'replication_factor':1}; > use test2; > CREATE TYPE address ( > street text, > city text, > zip_code int, > phones set > ); > CREATE TYPE fullname ( > irstname text, > astname text > ); > CREATE TABLE users ( > d uuid PRIMARY KEY, > ame frozen, > ddresses map> ); > {noformat} > Upgrade the single node to trunk, attempt to start the node up. Start will > fail with this exception: > {noformat} > ERROR [main] 2016-04-19 11:33:19,218 CassandraDaemon.java:704 - Exception > encountered during startup > org.apache.cassandra.exceptions.InvalidRequestException: Non-frozen UDTs are > not allowed inside collections: map > at > org.apache.cassandra.cql3.CQL3Type$Raw$RawCollection.throwNestedNonFrozenError(CQL3Type.java:686) > ~[main/:na] > at > org.apache.cassandra.cql3.CQL3Type$Raw$RawCollection.prepare(CQL3Type.java:652) > ~[main/:na] > at > org.apache.cassandra.cql3.CQL3Type$Raw$RawCollection.prepareInternal(CQL3Type.java:644) > ~[main/:na] > at > org.apache.cassandra.schema.CQLTypeParser.parse(CQLTypeParser.java:53) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.createColumnFromRow(SchemaKeyspace.java:1022) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.lambda$fetchColumns$12(SchemaKeyspace.java:1006) > ~[main/:na] > at java.lang.Iterable.forEach(Iterable.java:75) ~[na:1.8.0_77] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchColumns(SchemaKeyspace.java:1006) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchTable(SchemaKeyspace.java:960) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchTables(SchemaKeyspace.java:939) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspace(SchemaKeyspace.java:902) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspacesWithout(SchemaKeyspace.java:879) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchNonSystemKeyspaces(SchemaKeyspace.java:867) > ~[main/:na] > at org.apache.cassandra.config.Schema.loadFromDisk(Schema.java:134) > ~[main/:na] > at org.apache.cassandra.config.Schema.loadFromDisk(Schema.java:124) > ~[main/:na] > at > org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:229) > [main/:na] > at > org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:558) > [main/:na] > at > org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:687) > [main/:na] > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (CASSANDRA-11609) cassandra won't start with schema complaint that does not appear to be valid
[ https://issues.apache.org/jira/browse/CASSANDRA-11609?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15250263#comment-15250263 ] Russ Hatch commented on CASSANDRA-11609: [~slebresne] Yes, it should repro easily with the steps above. > cassandra won't start with schema complaint that does not appear to be valid > > > Key: CASSANDRA-11609 > URL: https://issues.apache.org/jira/browse/CASSANDRA-11609 > Project: Cassandra > Issue Type: Bug >Reporter: Russ Hatch > > This was found in the upgrades user_types_test. > Can be repro'd with ccm. > Create a 1 node ccm cluster on 2.2.x > Create this schema: > {noformat} > create keyspace test2 with replication = {'class':'SimpleStrategy', > 'replication_factor':1}; > use test2; > CREATE TYPE address ( > street text, > city text, > zip_code int, > phones set > ); > CREATE TYPE fullname ( > irstname text, > astname text > ); > CREATE TABLE users ( > d uuid PRIMARY KEY, > ame frozen, > ddresses map> ); > {noformat} > Upgrade the single node to trunk, attempt to start the node up. Start will > fail with this exception: > {noformat} > ERROR [main] 2016-04-19 11:33:19,218 CassandraDaemon.java:704 - Exception > encountered during startup > org.apache.cassandra.exceptions.InvalidRequestException: Non-frozen UDTs are > not allowed inside collections: map > at > org.apache.cassandra.cql3.CQL3Type$Raw$RawCollection.throwNestedNonFrozenError(CQL3Type.java:686) > ~[main/:na] > at > org.apache.cassandra.cql3.CQL3Type$Raw$RawCollection.prepare(CQL3Type.java:652) > ~[main/:na] > at > org.apache.cassandra.cql3.CQL3Type$Raw$RawCollection.prepareInternal(CQL3Type.java:644) > ~[main/:na] > at > org.apache.cassandra.schema.CQLTypeParser.parse(CQLTypeParser.java:53) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.createColumnFromRow(SchemaKeyspace.java:1022) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.lambda$fetchColumns$12(SchemaKeyspace.java:1006) > ~[main/:na] > at java.lang.Iterable.forEach(Iterable.java:75) ~[na:1.8.0_77] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchColumns(SchemaKeyspace.java:1006) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchTable(SchemaKeyspace.java:960) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchTables(SchemaKeyspace.java:939) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspace(SchemaKeyspace.java:902) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspacesWithout(SchemaKeyspace.java:879) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchNonSystemKeyspaces(SchemaKeyspace.java:867) > ~[main/:na] > at org.apache.cassandra.config.Schema.loadFromDisk(Schema.java:134) > ~[main/:na] > at org.apache.cassandra.config.Schema.loadFromDisk(Schema.java:124) > ~[main/:na] > at > org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:229) > [main/:na] > at > org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:558) > [main/:na] > at > org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:687) > [main/:na] > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (CASSANDRA-11609) cassandra won't start with schema complaint that does not appear to be valid
[ https://issues.apache.org/jira/browse/CASSANDRA-11609?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15250114#comment-15250114 ] Sylvain Lebresne commented on CASSANDRA-11609: -- It would sound like we're losing the frozeness information during the upgrade of the schema somehow. Slightly confused by the "Can be repro'd with ccm" though: are you able to reproduce with the step you provide here or not? > cassandra won't start with schema complaint that does not appear to be valid > > > Key: CASSANDRA-11609 > URL: https://issues.apache.org/jira/browse/CASSANDRA-11609 > Project: Cassandra > Issue Type: Bug >Reporter: Russ Hatch > > This was found in the upgrades user_types_test. > Can be repro'd with ccm. > Create a 1 node ccm cluster on 2.2.x > Create this schema: > {noformat} > create keyspace test2 with replication = {'class':'SimpleStrategy', > 'replication_factor':1}; > use test2; > CREATE TYPE address ( > street text, > city text, > zip_code int, > phones set > ); > CREATE TYPE fullname ( > irstname text, > astname text > ); > CREATE TABLE users ( > d uuid PRIMARY KEY, > ame frozen, > ddresses map> ); > {noformat} > Upgrade the single node to trunk, attempt to start the node up. Start will > fail with this exception: > {noformat} > ERROR [main] 2016-04-19 11:33:19,218 CassandraDaemon.java:704 - Exception > encountered during startup > org.apache.cassandra.exceptions.InvalidRequestException: Non-frozen UDTs are > not allowed inside collections: map > at > org.apache.cassandra.cql3.CQL3Type$Raw$RawCollection.throwNestedNonFrozenError(CQL3Type.java:686) > ~[main/:na] > at > org.apache.cassandra.cql3.CQL3Type$Raw$RawCollection.prepare(CQL3Type.java:652) > ~[main/:na] > at > org.apache.cassandra.cql3.CQL3Type$Raw$RawCollection.prepareInternal(CQL3Type.java:644) > ~[main/:na] > at > org.apache.cassandra.schema.CQLTypeParser.parse(CQLTypeParser.java:53) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.createColumnFromRow(SchemaKeyspace.java:1022) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.lambda$fetchColumns$12(SchemaKeyspace.java:1006) > ~[main/:na] > at java.lang.Iterable.forEach(Iterable.java:75) ~[na:1.8.0_77] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchColumns(SchemaKeyspace.java:1006) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchTable(SchemaKeyspace.java:960) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchTables(SchemaKeyspace.java:939) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspace(SchemaKeyspace.java:902) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspacesWithout(SchemaKeyspace.java:879) > ~[main/:na] > at > org.apache.cassandra.schema.SchemaKeyspace.fetchNonSystemKeyspaces(SchemaKeyspace.java:867) > ~[main/:na] > at org.apache.cassandra.config.Schema.loadFromDisk(Schema.java:134) > ~[main/:na] > at org.apache.cassandra.config.Schema.loadFromDisk(Schema.java:124) > ~[main/:na] > at > org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:229) > [main/:na] > at > org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:558) > [main/:na] > at > org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:687) > [main/:na] > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)