You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Gary Dusbabek (JIRA)" <ji...@apache.org> on 2010/07/29 23:05:20 UTC

[jira] Commented: (CASSANDRA-1335) Add Consistency Level for Schema Creation Operations

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

Gary Dusbabek commented on CASSANDRA-1335:
------------------------------------------

It wouldn't be that difficult to make the system_* methods optionally blocking (throw a timeout exception after rpc_timeout_in_ms).

Is your concern that a server under load will not be able to respond to the schema_agreement request and give a false indication that the update hasn't promulgated?  How long are you waiting before checking agreement?  Maybe you should just wait longer.  At the very least, you should wait for rpc_timeout_in_ms.

I kind of like the idea of applications handling this, or just letting the writes/updates fail (as they should when a keyspace/cf doesn't exist, etc.).

> Add Consistency Level for Schema Creation Operations
> ----------------------------------------------------
>
>                 Key: CASSANDRA-1335
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1335
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 0.7 beta 1
>         Environment: CentOS 5.2
> Trunc
>            Reporter: Arya Goudarzi
>
> Currently when applications create Keyspaces and CFs dynamically, user at application level has to make 2-3 calls to Cassandra to verify consistency of the schema as follows for example:
> 1. system_add_column_family
> 2. check_schema_agreement (will return a checksum of schema definitions and the nodes agreeing on them, user has to count the result to see if there is one checksum with all nodes meaning agreed or multiple checksums which means disagreed;)
> With clusters that have many application servers talking to them with high concurrency, it is possible for result from check_schema_agreement to be inconsistent in different nodes causing application misunderstanding of schema since application is no aware how the schema checksum is calculated. 
> One solution that I've thought to add at the application level is to create locks using memcache on CF and KS creation operations so that many clients don't collide. However, I have to loop through check_schema_agreement and store the state and also do describe_keyspace, hence a 3rd call, since I am not sure how the checksum is calculated in order to verify I am not asking another client to create the same CF or KS. This potentially could fall into infinit loop if client calls fail and I have to bind to an application level timeout detection to I don't loop forever. 
> I think it would highly make sense to have something like ConsistencyLevel added to schema creation operation to avoid users having to implement their locking and validation at their application level.  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.