cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Shaurya Gupta <shaurya.n...@gmail.com>
Subject Re: Mixing LWT and normal operations for a partition
Date Fri, 03 May 2019 04:05:40 GMT
Hi,


*1. The below sequence of commands also does not appear to give an expected
output.*

Since, there is a delete command in the batch and then an LWT update using
IF EXISTS, in the final result row with id = 5 must get deleted.


cassandra@cqlsh> select * from demo.tweets;




 *id* | *body*     | *latitude* | *longitude* | *time*
      | *user*

----+----------+----------+-----------+---------------------------------+-------

  *5* | *old body* |  *32.6448* |  *78.21672* | *2019-01-14
18:30:00.000000+0000* | *user5*


(1 rows)

cassandra@cqlsh>

cassandra@cqlsh> begin batch update demo.tweets SET body='new body' where
id = 5 IF EXISTS; delete from demo.tweets where id = 5 IF EXISTS; apply
batch;


 *[applied]*

-----------

      *True*


cassandra@cqlsh> select * from demo.tweets;


 *id* | *body*     | *latitude* | *longitude* | *time* | *user*

----+----------+----------+-----------+------+------

  *5* | *new body* |     *null* |      *null* | *null* | *null*


(1 rows)

cassandra@cqlsh>



*2. On the contrary below sequence of commands gives the expected output:*


cassandra@cqlsh> insert into  demo.tweets (id, user, body, time, latitude,
longitude) values (5, 'user5', 'old body', '2019-01-15', 32.644800,
78.216721);
                  cassandra@cqlsh>

cassandra@cqlsh> select * from demo.tweets;


 *id* | *body*     | *latitude* | *longitude* | *time*
      | *user*

----+----------+----------+-----------+---------------------------------+-------

  *5* | *old body* |  *32.6448* |  *78.21672* | *2019-01-14
18:30:00.000000+0000* | *user5*


(1 rows)

cassandra@cqlsh> delete from demo.tweets where id = 5 IF EXISTS;


 *[applied]*

-----------

      *True*


cassandra@cqlsh> select * from demo.tweets;


 *id* | *body* | *latitude* | *longitude* | *time* | *user*

----+------+----------+-----------+------+------


(0 rows)

cassandra@cqlsh> update demo.tweets SET body='new body' where id = 5 IF
EXISTS;


 *[applied]*

-----------

     *False*


cassandra@cqlsh> select * from demo.tweets;


 *id* | *body* | *latitude* | *longitude* | *time* | *user*

----+------+----------+-----------+------+------


(0 rows)


Thanks

Shaurya




On Fri, May 3, 2019 at 1:02 AM Shaurya Gupta <shaurya.nsit@gmail.com> wrote:

> One suggestion - I think Cassandra community is already having a drive to
> update the documentation. This could be added to CQLSH documentation or
> some other relevant documentation.
>
> On Fri, May 3, 2019 at 12:56 AM Shaurya Gupta <shaurya.nsit@gmail.com>
> wrote:
>
>> Thanks Jeff.
>>
>> On Fri, May 3, 2019 at 12:38 AM Jeff Jirsa <jjirsa@gmail.com> wrote:
>>
>>> No. Don’t mix LWT and normal writes.
>>>
>>> --
>>> Jeff Jirsa
>>>
>>>
>>> > On May 2, 2019, at 11:43 AM, Shaurya Gupta <shaurya.nsit@gmail.com>
>>> wrote:
>>> >
>>> > Hi,
>>> >
>>> > We are seeing really odd behaviour while try to delete a row which is
>>> simultaneously being updated in a light weight transaction.
>>> > The delete command succeeds and the LWT update fails with timeout
>>> exception but still the next select statement shows that the row still
>>> exists. This occurs ones in many such scenarios.
>>> >
>>> > Is it fine to mix LWT and normal operations for the same partition? Is
>>> it expected to work?
>>> >
>>> > Thanks
>>> > Shaurya
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscribe@cassandra.apache.org
>>> For additional commands, e-mail: user-help@cassandra.apache.org
>>>
>>>
>>
>> --
>> Shaurya Gupta
>>
>>
>>
>
> --
> Shaurya Gupta
>
>
>

-- 
Shaurya Gupta

Mime
View raw message