[
https://issues.apache.org/jira/browse/CASSANDRA-1391?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13181243#comment-13181243
]
Sylvain Lebresne commented on CASSANDRA-1391:
---------------------------------------------
Besides, I really think that 'get rid of thrift (or avro) internally' is a win
in the long run for doing it using apply/diff if there was no other argument.
But, as Jonathan, I see no reason not to apply/diff if we can instead of
rewriting equivalent methods.
Moreover, it seems to me that the apply/diff approach would mean that a schema
change would basically be 'send new schema as batch mutation to all nodes' and
the 'does node1 and node2 agree on schema' is just 'read node1 and node2 schema
row, diff the result and send a batch mutation with whatever each node needs'.
There is no need for 'schema versions' or anything, column timestamp just deal
with that problem. You only ever keep one row for the schema and that's it. So
it seems to me that it's basically making concurrency a non issue (because we
already handle concurrency internally and through the use of column
timestamps), while I don't see how those concurrency issues can be free if you
use some thrift serialization.
As Jonathan said, there may be a fundamental problem with the apply/diff
approach, but I don't see any right away (and truth is I'm much more confident
in C* existing data and concurrency model to handle conflicts during schema
update than in the current (or any) had-hoc migration thingy).
> Allow Concurrent Schema Migrations
> ----------------------------------
>
> Key: CASSANDRA-1391
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1391
> Project: Cassandra
> Issue Type: Improvement
> Components: Core
> Affects Versions: 0.7.0
> Reporter: Stu Hood
> Assignee: Pavel Yaskevich
> Fix For: 1.1
>
> Attachments:
> 0001-new-migration-schema-and-avro-methods-cleanup.patch,
> 0002-avro-removal.patch,
> 0003-oldVersion-removed-new-migration-distribution-schema.patch,
> CASSANDRA-1391.patch
>
>
> CASSANDRA-1292 fixed multiple migrations started from the same node to
> properly queue themselves, but it is still possible for migrations initiated
> on different nodes to conflict and leave the cluster in a bad state. Since
> the system_add/drop/rename methods are accessible directly from the client
> API, they should be completely safe for concurrent use.
> It should be possible to allow for most types of concurrent migrations by
> converting the UUID schema ID into a VersionVectorClock (as provided by
> CASSANDRA-580).
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira