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

Benjamin Lerer edited comment on CASSANDRA-17047 at 10/22/21, 2:53 PM:
-----------------------------------------------------------------------

|| Branch || CI ||
| [3.0|https://github.com/apache/cassandra/pull/1283] | 
[j8|https://app.circleci.com/pipelines/github/blerer/cassandra/231/workflows/9c152a1e-21bc-4a67-a2b0-f5d45dfe3dd2]
 |
| [3.11|https://github.com/apache/cassandra/pull/1284] | 
[j8|https://app.circleci.com/pipelines/github/blerer/cassandra?branch=CASSANDRA-17047-3.11]
 |
| [4.0|https://github.com/apache/cassandra/pull/1285] | [j8, 
J11|https://app.circleci.com/pipelines/github/blerer/cassandra/232/workflows/56ff04ee-1dbb-493d-b7e7-bcc8f1392b28]
 |
| [trunk| https://github.com/apache/cassandra/pull/1286] | [j8, 
j11|https://app.circleci.com/pipelines/github/blerer/cassandra/238/workflows/f1f8d3fa-a6ab-498c-86fa-07d6ea1d8378]|

The patch ensure that even when a node is not aware of a {{DROP}} column it 
will answer correctly to the query by taking into account only the {{fetched}} 
columns requested by the coordinatoor.



was (Author: blerer):
|| Branch || CI ||
| [3.0|https://github.com/apache/cassandra/pull/1283] | 
[j8|https://app.circleci.com/pipelines/github/blerer/cassandra/231/workflows/9c152a1e-21bc-4a67-a2b0-f5d45dfe3dd2]
 |
| [3.11|https://github.com/apache/cassandra/pull/1284] | 
[https://app.circleci.com/pipelines/github/blerer/cassandra?branch=CASSANDRA-17047-3.11]
 |
| [4.0|https://github.com/apache/cassandra/pull/1285] | [j8, 
J11|https://app.circleci.com/pipelines/github/blerer/cassandra/232/workflows/56ff04ee-1dbb-493d-b7e7-bcc8f1392b28]
 |
| [trunk| https://github.com/apache/cassandra/pull/1286] | [j8, 
j11|https://app.circleci.com/pipelines/github/blerer/cassandra/238/workflows/f1f8d3fa-a6ab-498c-86fa-07d6ea1d8378]|

The patch ensure that even when a node is not aware of a {{DROP}} column it 
will answer correctly to the query by taking into account only the {{fetched}} 
columns requested by the coordinatoor.


> Dropping a column can break queries until the schema is fully propagated 
> (TAKE 2)
> ---------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-17047
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-17047
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Cluster/Schema
>            Reporter: Benjamin Lerer
>            Assignee: Benjamin Lerer
>            Priority: Normal
>             Fix For: 3.0.x, 3.11.x, 4.0.x
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> With a table like:
> {code}
> CREATE TABLE ks.tbl (id int primary key, v1 int, v2 int, v3 int)
> {code}
> and we drop {{v2}}, we get this exception on the replicas which haven't seen 
> the schema change:
> {code}
> ERROR [SharedPool-Worker-1] node2 2020-06-24 09:49:08,107 
> AbstractLocalAwareExecutorService.java:169 - Uncaught exception on thread 
> Thread[SharedPool-Worker-1,5,node2]
> java.lang.IllegalStateException: [ColumnDefinition{name=v1, 
> type=org.apache.cassandra.db.marshal.Int32Type, kind=REGULAR, position=-1}, 
> ColumnDefinition{name=v2, type=org.apache.cassandra.db.marshal.Int32Type, 
> kind=REGULAR, position=-1}, ColumnDefinition{name=v3, 
> type=org.apache.cassandra.db.marshal.Int32Type, kind=REGULAR, position=-1}] 
> is not a subset of [v1 v3]
>       at 
> org.apache.cassandra.db.Columns$Serializer.encodeBitmap(Columns.java:546) 
> ~[main/:na]
>       at 
> org.apache.cassandra.db.Columns$Serializer.serializeSubset(Columns.java:478) 
> ~[main/:na]
>       at 
> org.apache.cassandra.db.rows.UnfilteredSerializer.serialize(UnfilteredSerializer.java:184)
>  ~[main/:na]
>       at 
> org.apache.cassandra.db.rows.UnfilteredSerializer.serialize(UnfilteredSerializer.java:114)
>  ~[main/:na]
>       at 
> org.apache.cassandra.db.rows.UnfilteredSerializer.serialize(UnfilteredSerializer.java:102)
>  ~[main/:na]
>       at 
> org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer.serialize(UnfilteredRowIteratorSerializer.java:132)
>  ~[main/:na]
>       at 
> org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer.serialize(UnfilteredRowIteratorSerializer.java:87)
>  ~[main/:na]
> ...
> {code}
> Note that it doesn't matter if we {{SELECT *}} or {{SELECT id, v1}}
> CASSANDRA-15899 tried to fix the problem when columns are dropped as well as 
> when columns are added. Unfortunately the fix introduced an issue and had to 
> be reverted in CASSANDRA-16735. 
> If the scenario for ADDED columns is tricky, the original scenario for 
> DROPPED columns can  be solved in a safe way at the {{ColumnFilter}} level. 
> By consequence, I think that we should at least solve that scenario.
> [~bdeggleston], [~samt], [~ifesdjeen] does my proposal makes sense to you?    



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to