Skip to content

Commit

Permalink
Wrap triggering of a watch inside an assertBusy(...) invocation
Browse files Browse the repository at this point in the history
This test replaces the watch index after watcher got started.
This triggers watches being reloaded and while this happens the
trigger engine is paused, which disallows watches from being
triggered. At this time there are no watches in the .watches
index and I think this is just unlucky timing.

Reloading of watches happens in the background and
the watch state can be started when that happens.
For normal schedule trigger engines this is not an issue,
because watches that are meant to be triggered are triggered
when the engine triggers the next time. However for the
mock scheduled trigger engine this is different,
because watches are triggered programatically and
there is no retry in this test.

I think just adding `timeWarp().trigger("mywatch");` inside
a `assertBusy(...)`` is the right fix here.  If it fails
because the mock schedule trigger engine is paused then
the test will try again. In the mean time the the watches
can be reloaded, which then resumes the mock scheduled trigger engine.

Closes elastic#50658
  • Loading branch information
martijnvg authored and SivagurunathanV committed Jan 21, 2020
1 parent ee20767 commit 2a372a9
Showing 1 changed file with 1 addition and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public void testCanUseAnyConcreteIndexName() throws Exception {
assertTrue(putWatchResponse.isCreated());
refresh();

timeWarp().trigger("mywatch");
assertBusy(() -> timeWarp().trigger("mywatch"));

assertBusy(() -> {
SearchResponse searchResult = client().prepareSearch(watchResultsIndex).setTrackTotalHits(true).get();
Expand Down

0 comments on commit 2a372a9

Please sign in to comment.