Hi Dave,
> The DataStreamer is unordered
Yes, that is absolutely correct.
If I understand correctly, the initial use case is the following:
- there is an initial payload that is streamed into the cluster via
data streamer.
- during that operation, new updates arrive and corresponding keys
should be updated.
So, it seems you can just do cache.put(key, newValue) (I assume, that
`allowOverwrite` == false).
> What we do is have a version # that we store in the value, and the
StreamReceiver ignores earlier versions.
In any way, your approach looks reasonable to me.
Thanks,
S.
ср, 29 авг. 2018 г. в 16:30, Dave Harvey <[email protected]>:
> The DataStreamer is unordered. If you have duplicate keys with
> different values, and you don't flush or take other action, then you will
> get an arbitrary result. AllowOverwrite is not a solution.
>
> Adding to the streamer returns a Future, and all of those futures are
> notified when the buffer is committed.,
>
> You can keep a map by key of those futures if the source is a single
> client, and delay subsequent updates until the first completes. You could
> discard more than one duplicate.
>
> What we do is have a version # that we store in the value, and the
> StreamReceiver ignores earlier versions.
> -DH
>
> On Wed, Aug 29, 2018 at 8:08 AM, Вячеслав Коптилин <
> [email protected]> wrote:
>
>> Hello,
>>
>> I don't think there is a way to do that check. Moreover, it seems to me
>> that is useless in any case.
>> The thing that allows you to achieve the desired behavior is
>> `allowOverwrite` flag [1].
>> By default, the data streamer will not overwrite existing data, which
>> means that if it will encounter an entry that is already in cache, it will
>> skip it.
>> So, you can just set `allowOverride` to `false` (which is the default
>> value) and put updated values into a cache.
>>
>> [1]
>> https://apacheignite.readme.io/docs/data-streamers#section-allow-overwrite
>>
>> Thanks,
>> S.
>>
>> ср, 29 авг. 2018 г. в 8:32, the_palakkaran <[email protected]>:
>>
>>> Hi,
>>>
>>> I have a data streamer to load data into a cache. While loading I might
>>> need
>>> to update value of a particular key in cache, so I need to check if it is
>>> already there in the streamer buffer. If so, either I need to update
>>> value
>>> against that key in the buffer or I need to flush the data in the
>>> streamer
>>> and then update. Is there a way to do this?
>>>
>>>
>>>
>>> --
>>> Sent from: http://apache-ignite-users.70518.x6.nabble.com/
>>>
>>
>
>
> *Disclaimer*
>
> The information contained in this communication from the sender is
> confidential. It is intended solely for use by the recipient and others
> authorized to receive it. If you are not the recipient, you are hereby
> notified that any disclosure, copying, distribution or taking action in
> relation of the contents of this information is strictly prohibited and may
> be unlawful.
>
> This email has been scanned for viruses and malware, and may have been
> automatically archived by *Mimecast Ltd*, an innovator in Software as a
> Service (SaaS) for business. Providing a *safer* and *more useful* place
> for your human generated data. Specializing in; Security, archiving and
> compliance. To find out more Click Here
> <http://www.mimecast.com/products/>.
>