Probably SyncCounter was introduced before CountdownLatch was available in
jdk. I think it should be good to switch to countdown latch.

On Fri, Apr 22, 2016 at 9:28 AM Venkateswara Rao Jujjuri <[email protected]>
wrote:

> I am mostly concerned about this logic in block() which makes us
> susceptible to spurious wake-ups.
>
>             if (i == prev) {
>                 break;
>             }
>
> Anyone comments?
>
> On Thu, Apr 21, 2016 at 5:23 PM, Venkateswara Rao Jujjuri <
> [email protected]
> > wrote:
>
> > LedgerHandle sync interface heavily depends on SyncCounter to convert
> > async interfaces
> > into sync interfaces.
> >
> > Usaylly
> >
> > SyncCounter.inc()
> > asyncCall()
> > SyncCOunter.block(0)
> >
> > The block code is.
> >
> >    synchronized void block(int limit) throws InterruptedException {
> >         while (i > limit) {
> >             int prev = i;
> >             wait();
> >             if (i == prev) {
> >                 break;
> >             }
> >         }
> >     }
> >
> > Since 'i' is going to be same as 'prev' on spurious wakeup, and wait()
> can
> > return
> > on spurious wakeups, aren't we susceptible? or I am missing something
> here?
> >
> > How about replacing SyncCounter with CountDownLatch.
> > If we agree, I can raise a ticket.
> >
> > --
> > Jvrao
> > ---
> > First they ignore you, then they laugh at you, then they fight you, then
> > you win. - Mahatma Gandhi
> >
> >
> >
>
>
> --
> Jvrao
> ---
> First they ignore you, then they laugh at you, then they fight you, then
> you win. - Mahatma Gandhi
>

Reply via email to