Not yet, But we could leverage internal structures of Apex as they do same
thing. For example in container local streams. There is a catch though -
the queue read by main thread will only happen when another data tuple
arrives in process call, or control tuple arrives for start or end window.

Thks
Amol



E:a...@datatorrent.com | M: 510-449-2606 | Twitter: @*amolhkekre*

www.datatorrent.com


On Mon, Apr 10, 2017 at 1:01 PM, Ganelin, Ilya <ilya.gane...@capitalone.com>
wrote:

> Thanks, Amol – that makes sense and was the solution I’d arrived at. I
> just was trying to avoid the delay between the data being ready and
> emitting it. Has anyone built a solution where it emits from the parent as
> soon as it’s ready in the child (assuming I don’t care about order).
>
> - Ilya Ganelin
>
>
> On 4/10/17, 12:45 PM, "Amol Kekre" <a...@datatorrent.com> wrote:
>
>     Ilya,
>     This constraint was introduced as allowing two threads to emit data
> creates
>     lots of bad situations
>     1. The emit is triggered between end_window and begin_window. This was
> a
>     critical blocker
>     2. Order no longer guaranteed, upon replay getting wrong order of
> events
>     within a window. This was something to worry about, but not a blocker
>
>     We had users report this problem.
>
>     The solution is to pass the data to main thread and have the main
> thread
>     emit this data during one of start-window, process, end-window calls.
>     Ideally during start-window or end-window so as to guarantee order.
> Keeping
>     this code in start or end window also ensures that process call remains
>     optimal.
>
>     Thks
>     Amol
>
>
>
>     E:a...@datatorrent.com | M: 510-449-2606 | Twitter: @*amolhkekre*
>
>     www.datatorrent.com
>
>
>     On Mon, Apr 10, 2017 at 12:39 PM, Ganelin, Ilya <
> ilya.gane...@capitalone.com
>     > wrote:
>
>     > Hello – I’ve got an operator that runs a cleanup thread (separate
> from the
>     > main event loop) and triggers a callback when an item is removed
> from an
>     > internal data structure. I would like for this callback to emit data
> from
>     > one of the operator’s ports, but I run into the following Exception:
>     >
>     >
>     >
>     > (From DefaultOutputPort.java, line 58)
>     >
>     > if (operatorThread != null && Thread.*currentThread*() !=
> operatorThread)
>     > {
>     >   // only under certain modes: enforce this
>     >   throw new IllegalStateException("Current thread " + Thread.
>     > *currentThread*().getName() +
>     >       " is different from the operator thread " +
>     > operatorThread.getName());
>     > }
>     >
>     >
>     >
>     > I could obviously extend DefaultOperatorPort to bypass this but I’d
> like
>     > to understand why that constraint is there and if there’s a good way
> to
>     > work around it.
>     >
>     >
>     >
>     > Would love to hear the community’s thoughts. Thanks!
>     >
>     >
>     >
>     > - Ilya Ganelin
>     >
>     > [image: id:image001.png@01D1F7A4.F3D42980]
>     >
>     > ------------------------------
>     >
>     > The information contained in this e-mail is confidential and/or
>     > proprietary to Capital One and/or its affiliates and may only be used
>     > solely in performance of work or services for Capital One. The
> information
>     > transmitted herewith is intended only for use by the individual or
> entity
>     > to which it is addressed. If the reader of this message is not the
> intended
>     > recipient, you are hereby notified that any review, retransmission,
>     > dissemination, distribution, copying or other use of, or taking of
> any
>     > action in reliance upon this information is strictly prohibited. If
> you
>     > have received this communication in error, please contact the sender
> and
>     > delete the material from your computer.
>     >
>
>
> ________________________________________________________
>
> The information contained in this e-mail is confidential and/or
> proprietary to Capital One and/or its affiliates and may only be used
> solely in performance of work or services for Capital One. The information
> transmitted herewith is intended only for use by the individual or entity
> to which it is addressed. If the reader of this message is not the intended
> recipient, you are hereby notified that any review, retransmission,
> dissemination, distribution, copying or other use of, or taking of any
> action in reliance upon this information is strictly prohibited. If you
> have received this communication in error, please contact the sender and
> delete the material from your computer.
>

Reply via email to