Please note that tuples should not be emitted by any thread other than the
main operator thread.

A common pattern is to use a thread-safe queue and have worker threads
enqueue
tuples there; the main operator thread then pulls tuples from the queue and
emits them.

Ram

On Tue, Feb 21, 2017 at 10:05 AM, Sunil Parmar <[email protected]>
wrote:

> Hi there,
> We have the following setup:
>
>    - we have a generic operator that’s processing tuples in its input port
>    - in the input port’s process method, we check for a condition, and:
>       - if the condition is met, the tuple is emitted to the next
>       operator right away (in the process method)
>       - Otherwise, if the condition is not met, we store the tuple  in
>       some cache and we use some threads that periodically check the 
> condition to
>       become true. Once the condition is true, the threads call the emit 
> method
>       on the stored tuples.
>
> With this setup, we occasionally encounter the following error:
> 2017-02-15 17:29:09,364 ERROR com.datatorrent.stram.engine.GenericNode:
> Catastrophic Error: Out of sequence BEGIN_WINDOW tuple 58a4046100003b7f on
> port transformedJSON while expecting 58a4046100003b7e
>
> Is there a way to make the above work correctly?
> If not, can you recommend a better way of doing this?
> How can we ensure window assignment is done synchronously before emitting
> tuples ?
>
> Thanks very much in advance…
> -allan
>



-- 

_______________________________________________________

Munagala V. Ramanath

Software Engineer

E: [email protected] | M: (408) 331-5034 | Twitter: @UnknownRam

www.datatorrent.com  |  apex.apache.org

Reply via email to