cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ali Akhtar <ali.rac...@gmail.com>
Subject Re: Consistency when adding data to collections concurrently?
Date Sat, 12 Nov 2016 11:26:05 GMT
I'm responding to a 3rd party API, so I have no control over sending the
labels together instead of one by one. In this case, the API will send them
one by one.

The list is actually of a list<frozen<my_udt>> and not a text (I used text
for simplification, apologies).

In that case, will updates still merge the list values instead of
overwriting them?

On Sat, Nov 12, 2016 at 4:15 PM, Oskar Kjellin <oskar.kjellin@gmail.com>
wrote:

> Could you not send both labels in one request? Race conditions should
> still be handled as Vladimir suggests. But in this specific case the client
> could send both as 1 request thus simplifying the solution.
>
> /Oskar
>
> On 12 nov. 2016, at 12:05, Vladimir Yudovin <vladyu@winguzone.com> wrote:
>
> Hi Ali,
>
> >What can I do so I end up with [1, 2] instead of either [1] or [2] after
> both requests have been processed?
> Use UPDATE, not INSERT. Thus new labels will be added to list, without
> overwriting old ones. Also consider usage of SET instead of LIST to avoid
> duplicates.
>
> Best regards, Vladimir Yudovin,
>
> *Winguzone <https://winguzone.com?from=list> - Hosted Cloud
> CassandraLaunch your cluster in minutes.*
>
>
> ---- On Sat, 12 Nov 2016 05:34:24 -0500*Ali Akhtar <ali.rac200@gmail.com
> <ali.rac200@gmail.com>>* wrote ----
>
> I have a table where each record contains a list<string> of labels.
>
> I have an endpoint which responds to new labels being added to a record by
> the user.
>
> Consider the following scenario:
>
> - Record X, labels = []
> - User selects 2 labels, clicks a button, and 2 http requests are
> generated.
> - The server receives request for Label 1 and Label 2 at the same time.
> - Both requests see the labels as empty, add 1 label to the collection,
> and send it.
> - Record state as label 1 request sees it: [1], as label 2 sees it: [2]
>
> How will the above conflict be resolved? What can I do so I end up with
> [1, 2] instead of either [1] or [2] after both requests have been processed?
>
>
>

Mime
View raw message