Don't use list, use set instead. If you need ordering of insertion, use a map<timeuuid,text> where timeuuid is generated by the client to guarantee insertion order
When setting a new value to a list, C* will do a read-delete-write internally e.g. read the current list, remove all its value (by a range tombstone) and then write the new list. Please note that prepend & append operations on list do not require this read-delete-write and thus performs slightly better On Sat, Nov 12, 2016 at 11:34 AM, Ali Akhtar <ali.rac...@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? >