WaitCriterion extends ThrowingRunnable. So this pattern should still work as WaitCriterion did before. But just using an assertion inside of a lambda is the better option.
-Dan On Thu, Apr 11, 2019 at 12:02 PM Kirk Lund <kl...@apache.org> wrote: > Just a quick heads up... I'm seeing an Awaitility usage pattern that is > broken and does nothing. Specifically, it's any uses of dunit WaitCriterion > with untilAsserted: > > GeodeAwaitility.*await().untilAsserted(new WaitCriterion*() { > > @Override > public boolean done() { > return region.isDestroyed(); > } > > @Override > public String description() { > return "Region was not destroyed : " + region.isDestroyed(); > } > }); > > The above is broken. It will not await anything. Invoking "new > WaitCriterion()" will not throw anything so untilAsserted returns > immediately. This may cause some flaky tests to be flakier because we're no > longer waiting for the WaitCriterion done to be true. > > To fix this, just change it to use await().until with a lambda containing > the contents of done(): > > GeodeAwaitility.*await().until(() -> *region.isDestroyed()); >