cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Stupp (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (CASSANDRA-9425) Make node-local schema fully immutable
Date Wed, 14 Dec 2016 20:44:58 GMT

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

Robert Stupp edited comment on CASSANDRA-9425 at 12/14/16 8:44 PM:
-------------------------------------------------------------------

Discussed offline with Aleksey about this and found a solution to remove the fields {{keyspaceAndTablePair}}
and {{keyspaceAndTableBytes}} in {{TableMetadata}}.
Patch on top of 9425-1 (CI triggered):
||trunk|[branch|https://github.com/iamaleksey/cassandra/compare/9425-1...snazy:9425-opts]|[testall|http://cassci.datastax.com/view/Dev/view/snazy/job/snazy-9425-opts-testall/lastSuccessfulBuild/]|[dtest|http://cassci.datastax.com/view/Dev/view/snazy/job/snazy-9425-opts-dtest/lastSuccessfulBuild/]

EDIT: update branch link


was (Author: snazy):
Discussed offline with Aleksey about this and found a solution to remove the fields {{keyspaceAndTablePair}}
and {{keyspaceAndTableBytes}} in {{TableMetadata}}.
Patch on top of 9425-1 (CI triggered):
||trunk|[branch|https://github.com/apache/cassandra/compare/trunk...snazy:9425-opts]|[testall|http://cassci.datastax.com/view/Dev/view/snazy/job/snazy-9425-opts-testall/lastSuccessfulBuild/]|[dtest|http://cassci.datastax.com/view/Dev/view/snazy/job/snazy-9425-opts-dtest/lastSuccessfulBuild/]


> Make node-local schema fully immutable
> --------------------------------------
>
>                 Key: CASSANDRA-9425
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-9425
>             Project: Cassandra
>          Issue Type: Sub-task
>            Reporter: Aleksey Yeschenko
>            Assignee: Aleksey Yeschenko
>             Fix For: 4.0
>
>
> The way we handle schema changes currently is inherently racy.
> All of our {{SchemaAlteringStatement}} s perform validation on a schema state that's
won't necessarily be there when the statement gets executed and mutates schema.
> We should make all the *Metadata classes ({{KeyspaceMetadata, TableMetadata}}, {{ColumnMetadata}},
immutable, and local schema persistently snapshottable, with a single top-level {{AtomicReference}}
to the current snapshot. Have DDL statements perform validation and transformation on the
same state.
> In pseudo-code, think
> {code}
> public interface DDLStatement
> {
>     /**
>      * Validates that the DDL statement can be applied to the provided schema snapshot.
>      *
>      * @param schema snapshot of schema before executing CREATE KEYSPACE
>      */
>     void validate(SchemaSnapshot schema);
>  
>     /**
>      * Applies the DDL statement to the provided schema snapshot.
>      * Implies that validate() has already been called on the provided snapshot.
>      *
>      * @param schema snapshot of schema before executing the statement
>      * @return snapshot of schema as it would be after executing the statement
>      */
>     SchemaSnapshot transform(SchemaSnapshot schema);
> }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message