Alain,Thanks for the response and I completely agree with you about your approach but there is a small caveat, we have another DC in Europe, right now this keyspace is not replicating there but eventually will be added. EU DC has significant latency of 200 ms RTT, so going with EACH_QUORUM would not be feasible. We can reset the SLA's for consistency but my question is how to determine when was the row written to remote DC? Is there anyway to determine that Naidu Saladi
On Tuesday, July 10, 2018 8:56 AM, Alain RODRIGUEZ <arodr...@gmail.com> wrote: Hello, I have multi DC (3 DC's) Cassandra cluster/ring - One of the application wrote a row to DC1(using Local Quorum) and within span of 50 ms, it tried to read same row from DC2 and could not find the row. [...] So how to determine when the row is actually written in each DC? To me, this guarantee you try to achieve could obtained using 'EACH_QUORUM' for writes (ie 'local_quorum' on each DC), and 'LOCAL_QUORUM' for reads for example. You would then have a strong consistency, as long as the same client application is running write then read or that it sends a trigger for the second call sequentially, after validating the write, in some way. Our both DC's have sub milli second latency at network level, usually <2 ms. We promised 20 ms consistency. In this case Application could not find the row in DC2 in 50 ms In these conditions, using 'EACH_QUORUM' might not be too much of a burden for the coordinator and the client. The writes are already being processed, this would increase the latency at the coordinator level (and thus at the client level), but you would be sure that all the clusters have the row in a majority of the replicas before triggering the read. C*heers,-----------------------Alain Rodriguez - @arodream - alain@thelastpickle.comFrance / Spain The Last Pickle - Apache Cassandra Consultinghttp://www.thelastpickle.com 2018-07-10 8:24 GMT+01:00 Simon Fontana Oscarsson <simon.fontana.oscars...@ericsson.com>: Have you tried trace? -- SIMON FONTANA OSCARSSON Software Developer Ericsson Ölandsgatan 1 37133 Karlskrona, Sweden simon.fontana.oscarsson@ ericsson.com www.ericsson.com On mån, 2018-07-09 at 19:30 +0000, Saladi Naidu wrote: > Cassandra is an eventual consistent DB, how to find when a row is actually > written in multi DC environment? Here is the problem I am trying to solve > > - I have multi DC (3 DC's) Cassandra cluster/ring - One of the application > wrote a row to DC1(using Local Quorum) and within span of 50 ms, it tried to > read same row from DC2 and could not find the > row. Our both DC's have sub milli second latency at network level, usually <2 > ms. We promised 20 ms consistency. In this case Application could not find > the row in DC2 in 50 ms > > I tried to use "select WRITETIME(authorizations_json) from > token_authorizations where ...." to find when the Row is written in each DC, > but both DC's returned same Timestamp. After further research > I found that Client V3 onwards Timestamp is supplied at Client level so > WRITETIME does not help "https://docs.datastax.com/en/ > developer/java-driver/3.4/ manual/query_timestamps/" > > So how to determine when the row is actually written in each DC? > > > Naidu Saladi