cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Aleksey Yeschenko (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-11502) Fix denseness and column metadata updates coming from Thrift
Date Tue, 26 Apr 2016 15:52:12 GMT


Aleksey Yeschenko commented on CASSANDRA-11502:

Re 1: If you leave it alone, then {{is_dense}} will forever be stuck at true and never recomputed.
This is breaking upgrading to 3.0 (now, we'll still need to address this in 3.0, for users
upgrading from C* that don't have this patch in, but that's what CASSANDRA-11315 is for).
Now, I 100% get the caution, but I, instead, feel more paranoid about leaving it in - having
the logic duplicated in two places has already led to this one bug. And, a lot less critically,
in preparation for Thrift removal I want to push any Thrift code as close to the edges as

Re 2: I *think* we should be safe here b/c of the {{isThriftCompatible()}} guard in {{CassandraServer::system_update_column_family()}}.
If we aren't, then we have a bug in {{update_column_family()}}. I'll double check.

> Fix denseness and column metadata updates coming from Thrift
> ------------------------------------------------------------
>                 Key: CASSANDRA-11502
>                 URL:
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Distributed Metadata
>            Reporter: Aleksey Yeschenko
>            Assignee: Aleksey Yeschenko
>            Priority: Minor
>             Fix For: 2.2.x, 3.0.x, 3.x
> It was [decided|]
that we'd be recalculating {{is_dense}} for table updates coming from Thrift on every change.
However, due to some oversight, {{is_dense}} can only go from {{false}} to {{true}}. Once
dense, even adding a {{REGULAR}} column will not reset {{is_dense}} back to {{false}}.
> The recalculation fails because no matter what happens, we never remove the auto-generated
{{CLUSTERING}} and {{COMPACT_VALUE}} columns of a dense table.
> Which ultimately leads to the issue on 2.2 to 3.0 upgrade (see CASSANDRA-11315).
> What we should do is remove the special-case for Thrift in {{LegacySchemaTables::makeUpdateTableMutation}}
and correct the logic in {{ThriftConversion::internalFromThrift}} to remove those columns
when going from dense to sparse.
> This is not enough to fix CASSANDRA-11315, however, as we need to handle pre-patch upgrades,
and upgrades from 2.1. Fixing it in 2.2 means a) getting proper schema from {{DESCRIBE}} now
and b) using the more efficient {{SparseCellNameType}} when you add columns.

This message was sent by Atlassian JIRA

View raw message