The labels collection is of the type set<frozen<label>> , where label is a
udt containing: id, name, description , all text fields.

On Sat, Nov 12, 2016 at 5:54 PM, Ali Akhtar <ali.rac...@gmail.com> wrote:

> The problem isn't just the update / insert though, right? Don't frozen
> entities get overwritten completely? So if I had [1] [2] being written as
> updates, won't each update overwrite the set completely, so i'll end up
> with either one of them instead of [1,2]?
>
> On Sat, Nov 12, 2016 at 5:50 PM, DuyHai Doan <doanduy...@gmail.com> wrote:
>
>> Maybe you should use my Achilles mapper, which does generates UPDATE
>> statements on collections and not only INSERT
>> Le 12 nov. 2016 13:08, "Ali Akhtar" <ali.rac...@gmail.com> a écrit :
>>
>>> I am using the Java Cassandra mapper for all of these cases, so my code
>>> looks like this:
>>>
>>> Item myItem = myaccessor.get( itemId );
>>> Mapper<Item> mapper = mappingManager.create( Item.class );
>>>
>>> myItem.labels.add( newLabel );
>>> mapper.save( myItem );
>>>
>>> On Sat, Nov 12, 2016 at 5:06 PM, Ali Akhtar <ali.rac...@gmail.com>
>>> wrote:
>>>
>>>> Thanks DuyHai, I will switch to using a set.
>>>>
>>>> But I'm still not sure how to resolve the original question.
>>>>
>>>> - Original labels = []
>>>> - Request 1 arrives with label = 1, and request 2 arrives with label = 2
>>>> - Updates are sent to c* with labels = [1] and labels = [2]
>>>> simultaneously.
>>>>
>>>> What will happen in the above case? Will it cause the labels to end up
>>>> as [1,2] (what I want) or either [1] or [2]?
>>>>
>>>> If I use consistency level = all, will that cause it to end up with
>>>> [1,2]?
>>>>
>>>> On Sat, Nov 12, 2016 at 4:59 PM, DuyHai Doan <doanduy...@gmail.com>
>>>> wrote:
>>>>
>>>>> 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?
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>

Reply via email to