You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Jonathan Ellis (Updated) (JIRA)" <ji...@apache.org> on 2011/10/13 21:13:11 UTC

[jira] [Updated] (CASSANDRA-3272) READ Operation with CL=EACH_QUORUM succeed when a DC is down (RF=3)

     [ https://issues.apache.org/jira/browse/CASSANDRA-3272?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jonathan Ellis updated CASSANDRA-3272:
--------------------------------------

    Attachment: 3272.txt

currently EACH_QUORUM silently does LOCAL_QUORUM instead. Patch attached to raise an error saying EACH_QUORUM is only supported for writes.
                
> READ Operation with CL=EACH_QUORUM succeed when a DC is down (RF=3)
> -------------------------------------------------------------------
>
>                 Key: CASSANDRA-3272
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-3272
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 0.7.0
>            Reporter: Jackson Chung
>            Assignee: Jonathan Ellis
>            Priority: Minor
>             Fix For: 1.1
>
>         Attachments: 3272.txt
>
>
> "READ EACH_QUORUM: 	Returns the record with the most recent timestamp once a quorum of replicas in each data center of the cluster has responded."
> In other words, if a DC is down and the QUORUM could not be reached on that DC, read should fail.
> test case:
> - Cassandra version 0.8.6:
> INFO [main] 2011-09-28 22:26:24,297 StorageService.java (line 371) Cassandra version: 0.8.6
> - 6-node cluster with 2 DC and 3 node each. RF=3 in each DC:
> [default@Keyspace3] describe keyspace;
> Keyspace: Keyspace3:
> Replication Strategy: org.apache.cassandra.locator.NetworkTopologyStrategy
> Durable Writes: true
> Options: [DC2:3, DC1:3]
> Column Families:
> ColumnFamily: test
> Key Validation Class: org.apache.cassandra.db.marshal.BytesType
> Default column value validator: org.apache.cassandra.db.marshal.BytesType
> Columns sorted by: org.apache.cassandra.db.marshal.BytesType
> Row cache size / save period in seconds: 0.0/0
> Key cache size / save period in seconds: 200000.0/14400
> Memtable thresholds: 1.0875/1440/232 (millions of ops/minutes/MB)
> GC grace seconds: 864000
> Compaction min/max thresholds: 4/32
> Read repair chance: 1.0
> Replicate on write: true
> Built indexes: []
> all nodes are up, insert a row:
> $ nodetool -h localhost ring
> Address DC Rack Status State Load Owns Token
> 141784319550391026443072753096570088106
> 10.34.79.179 DC1 RAC1 Up Normal 11.13 KB 16.67% 0
> 10.34.70.163 DC2 RAC1 Up Normal 11.14 KB 16.67% 28356863910078205288614550619314017621
> 10.35.81.147 DC1 RAC1 Up Normal 11.14 KB 16.67% 56713727820156410577229101238628035242
> 10.84.233.170 DC2 RAC1 Up Normal 11.14 KB 16.67% 85070591730234615865843651857942052864
> 10.195.201.236 DC1 RAC1 Up Normal 11.14 KB 16.67% 113427455640312821154458202477256070485
> 10.118.147.73 DC2 RAC1 Up Normal 11.14 KB 16.67% 141784319550391026443072753096570088106
> - insert a value 
> [default@Keyspace3] set test[utf8('test-key-1')][utf8('test-col')]=utf8('test-value');
> Value inserted.
> sanity check (cli connects to a node in DC1) :
> [default@Keyspace3] consistencylevel as EACH_QUORUM;                                  
> Consistency level is set to 'EACH_QUORUM'.
> [default@Keyspace3] get test[utf8('test-key-1')];   
> => (column=746573742d636f6c, value=test-value, timestamp=1317249361722000)
> Returned 1 results
> shut down DC2:
> $ nodetool -h localhost ring
> Address         DC          Rack        Status State   Load            Owns    Token                                       
>                                                                                141784319550391026443072753096570088106     
> 10.34.79.179    DC1         RAC1        Up     Normal  51.86 KB        16.67%  0                                           
> 10.34.70.163    DC2         RAC1        Down   Normal  51.88 KB        16.67%  28356863910078205288614550619314017621      
> 10.35.81.147    DC1         RAC1        Up     Normal  47.5 KB         16.67%  56713727820156410577229101238628035242      
> 10.84.233.170   DC2         RAC1        Down   Normal  51.88 KB        16.67%  85070591730234615865843651857942052864      
> 10.195.201.236  DC1         RAC1        Up     Normal  47.5 KB         16.67%  113427455640312821154458202477256070485     
> 10.118.147.73   DC2         RAC1        Down   Normal  51.88 KB        16.67%  141784319550391026443072753096570088106  
> [default@Keyspace3] get test[utf8('test-key-1')];   
> => (column=746573742d636f6c, value=746573742d76616c7565, timestamp=1317249361722000)
> Returned 1 results.
> tried with pycassaShell:
> >>> col_fam.get('test-key-1',read_consistency_level=pycassa.ConsistencyLevel.EACH_QUORUM)
> OrderedDict([('test-col', 'test-value')])

--
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