[ 
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)

Reply via email to