> Would you know why the driver doesn't automatically change to LOCAL_SERIAL 
> during a DC outage ?
I would say because *you* decide, not the driver ;-) This kind of fallback 
could be achieved with a custom downgrading policy 
(DowngradingConsistencyRetryPolicy [*] doesn't handle ConsistencyLevel.SERIAL / 
LOCAL_SERIAL )
* 
https://github.com/datastax/python-driver/blob/2.7.2-cassandra-2.1/cassandra/policies.py#L747
Best,
Romain
 

    Le Mercredi 8 juin 2016 15h41, Jeronimo de A. Barros 
<jeronimo.bar...@gmail.com> a écrit :
 

 Tyler,
Thank you, it's working now:
self.query['online'] = SimpleStatement("UPDATE table USING ttl %s SET l = True 
WHERE k2 = %s IF l = False;", consistency_level=ConsistencyLevel.LOCAL_QUORUM, 
serial_consistency_level=ConsistencyLevel.LOCAL_SERIAL) 
Would you know why the driver doesn't automatically change to LOCAL_SERIAL 
during a DC outage ? Or the driver already has an option to make this change 
from SERIAL to LOCAL_SERIAL ?
Again, thank you very much, the bill for the beers is on me in September during 
the Cassandra Summit. ;-)
Best regards, Jero

On Tue, Jun 7, 2016 at 6:39 PM, Tyler Hobbs <ty...@datastax.com> wrote:

You can set the serial_consistency_level to LOCAL_SERIAL to tolerate a DC 
failure: 
http://datastax.github.io/python-driver/api/cassandra/query.html#cassandra.query.Statement.serial_consistency_level.
  It defaults to SERIAL, which ignores DCs.

On Tue, Jun 7, 2016 at 12:26 PM, Jeronimo de A. Barros 
<jeronimo.bar...@gmail.com> wrote:

Hi,
I have a cluster spreaded among 2 datacenters (DC1 and DC2), two server on each 
DC and I have a keyspace with NetworkTopologyStrategy (DC1:2 and DC2:2) with 
the following table:
CREATE TABLE test (  k1 int,  k2 timeuuid,  PRIMARY KEY ((k1), k2)) WITH 
CLUSTERING ORDER BY (k2 DESC)
During a datacenter outage, as soon as a datacenter goes offline, I get this 
error during a lightweight transaction:
cqlsh:devtest> insert into test (k1,k2) values(1,now()) if not exists;Request 
did not complete within rpc_timeout.                                          
And a short time after the on-line DC verify the second DC is off-line:
cqlsh:devtest> insert into test (k1,k2) values(1,now()) if not exists;Unable to 
complete request: one or more nodes were unavailable.                       
So, my question is: Is there any way to keep lightweight transactions working 
during a datacenter outage using the C* Python driver 2.7.2 ?
I was thinking about catch the exception and do a simple insert (without "IF") 
when the error occur, but having the lightweight transactions working even 
during a DC outage/split would be nice.
Thanks in advance for any help/hints.
Best regards, Jero



-- 
Tyler Hobbs
DataStax




  

Reply via email to