[ https://issues.apache.org/jira/browse/CASSANDRA-12236?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15391906#comment-15391906 ]
Sylvain Lebresne commented on CASSANDRA-12236: ---------------------------------------------- So the idea of not sending the {{cdc}} boolean to old node is correct (I think), but unfortunately we use {{RowUpdateBuilder}} to construct the mutation and that class is a bit naive and includes all the known columns from the metadata in the header of the mutation it sends (out of simplicity), even if there is not value for some of the columns. Now, the {{RowUpdateBuilder}} and the way we use it building schema mutation is a bit of a mess as we sometimes reuse a particular {{PartitionUpdate}}, but not in all path and without a good way to distinguish, which, long story short, makes it harder to figure out which columns will actually be used in the PartitionUpdate (and {{PartitionUpdate}} needs to know that upfront). Truth being told, I think {{RowUpdateBuilder}} has overgrown its initial intention and it's imo time for a small refactor. So I'm attaching a patch that refactor {{RowUpdateBuilder}}, and make it only include the column it needs to so that Josh's patch work as intended. It moves a bit of code around, but I think the result is overall a lot cleaner (and potentially more reusable). I do will note that {{RowUpdateBuilder}} was used quite a bit in tests now (in fact, some of the features of {{RowUpdateBuilder}} only existed for tests) so I didn't removed the class, but simply moved it to the tests. | [12236-trunk|https://github.com/pcmanus/cassandra/commits/12236-trunk] | [utests|http://cassci.datastax.com/job/pcmanus-12236-trunk-testall] | [dtests|http://cassci.datastax.com/job/pcmanus-12236-trunk-dtest] | > RTE from new CDC column breaks in flight queries. > ------------------------------------------------- > > Key: CASSANDRA-12236 > URL: https://issues.apache.org/jira/browse/CASSANDRA-12236 > Project: Cassandra > Issue Type: Bug > Reporter: Jeremiah Jordan > Assignee: Sylvain Lebresne > Fix For: 3.x > > Attachments: 12236.txt > > > This RTE is not harmless. It will cause the internode connection to break > which will cause all in flight requests between these nodes to die/timeout. > {noformat} > - Due to changes in schema migration handling and the storage format > after 3.0, you will > see error messages such as: > "java.lang.RuntimeException: Unknown column cdc during > deserialization" > in your system logs on a mixed-version cluster during upgrades. This > error message > is harmless and due to the 3.8 nodes having cdc added to their schema > tables while > the <3.8 nodes do not. This message should cease once all nodes are > upgraded to 3.8. > As always, refrain from schema changes during cluster upgrades. > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)