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