Bhupesh: I would code as follows:
handleIdleTime()
{
if(something to do){
do some work W;
} else{
sleep(SPIN_MILLIS);
}
}
Essentially, if you have done some work then you don't need to sleep.
Regards,
Sandeep
On Wed, Sep 2, 2015 at 11:27 AM, Pramod Immaneni <[email protected]>
wrote:
> It is not guaranteed.
>
> On Wed, Sep 2, 2015 at 11:09 AM, Sandeep Deshmukh <[email protected]
> >
> wrote:
>
> > As I understand, I can get my task done earlier if I have that in
> > handleIdleTime() rathe than waiting for endWindow().
> >
> > But can I depend solely on handleIdleTime() ? Is invocation of
> > handleIdleTime() guaranteed in the operator per window cycle?
> >
> >
> >
> > On Wed, Sep 2, 2015 at 7:46 AM, Pramod Immaneni <[email protected]>
> > wrote:
> >
> > > The time you spend in handleIdleTime could still be less than a window
> > > interval. If you move your processing to end window, since end window
> is
> > > called when end window is received from upstream you would delay the
> > > results being sent to downstream.
> > >
> > > On Wed, Sep 2, 2015 at 1:26 AM, Bhupesh Chawda <
> [email protected]>
> > > wrote:
> > >
> > > > Hi All,
> > > >
> > > > I understand that handleIdleTime() is called when the operator is
> > idling
> > > > and is intended for auxiliary processing. Also, if the operator does
> > not
> > > > have anything to do, it must block for some time to avoid busy loop.
> > > > What happens if my processing within handleIdleTime() exceeds the
> > amount
> > > of
> > > > time it would have blocked otherwise? In that case does it make a
> > > > difference whether the processing is done in handleIdleTime() or in
> > > > endWindow() call?
> > > >
> > > > To clarify the question, is this the right approach:
> > > >
> > > > handleIdleTime()
> > > > {
> > > > do some work W;
> > > > t = time to do work W;
> > > > sleep(SPIN_MILLIS - t);
> > > > }
> > > >
> > > > What is the right approach if t > SPIN_MILLIS?
> > > >
> > > > Thanks.
> > > > --
> > > > Regards,
> > > > Bhupesh Chawda
> > > >
> > >
> >
>