[ https://issues.apache.org/jira/browse/CASSANDRA-4988?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sylvain Lebresne resolved CASSANDRA-4988. ----------------------------------------- Resolution: Duplicate Fix Version/s: (was: 2.0.6) As said above, there is not real way we can make this happen in a minor release, and the right solution is basically a sub-part of CASSANDRA-6717, so marking this as a duplicate of that latter issue. > Fix concurrent addition of collection columns > --------------------------------------------- > > Key: CASSANDRA-4988 > URL: https://issues.apache.org/jira/browse/CASSANDRA-4988 > Project: Cassandra > Issue Type: Bug > Reporter: Sylvain Lebresne > Assignee: Sylvain Lebresne > > It is currently not safe to update the schema by adding multiple collection > columns to the same table. The reason is that with collections, the > comparator embeds a map of names->comparator for each collection columns > (since different maps can have different key type for example). And when > serialized on disk in the schema table, the comparator is serialized as a > string with that map as one column. So if new collection columns are added > concurrently, the addition may not be merged correctly. > One option to fix this would be to stop serializing the names->comparator map > of ColumnToCollectionType in toString(), and do one of: > # reconstruct that map from the information stores in the schema_columns. The > downside I can see is that code-wise this may not be super clean to do. > # change ColumnToCollectionType so that instead of having it's own > names->comparator map, to just store a point to the CFMetaData that contains > it and when it needs to find the exact comparator for a collection column, it > would use CFMetadata.column_metadata directly. The downside is that creating > a dependency from a comparator to a CFMetadata feels a bit backward. > Note sure what's the best solution of the two honestly. > While probably more anecdotal, we also now allow to change the type of the > comparator in some cases (for example updating to BytesType is always > allowed), and doing so concurrently on multiple components of a composite > comparator is also not safe for a similar reason. I'm not sure how to fix > that one. -- This message was sent by Atlassian JIRA (v6.2#6252)