This is an automated email from the ASF dual-hosted git repository.

jlli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new 3ff4d13af7 Retry validateJobs for a while to avoid flaky errors (#8999)
3ff4d13af7 is described below

commit 3ff4d13af7b693ec8f4766bbc281c1b3034621ba
Author: Gonzalo Ortiz Jaureguizar <[email protected]>
AuthorDate: Mon Jul 4 20:16:27 2022 +0200

    Retry validateJobs for a while to avoid flaky errors (#8999)
    
    * Retry validateJobs for a while to avoid flaky errors
    
    * replace waitForResult with waitForCondition as recommended in PR
    
    * Fix checkstyle
---
 .../core/minion/PinotTaskManagerStatelessTest.java | 23 ++++++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

diff --git 
a/pinot-controller/src/test/java/org/apache/pinot/controller/helix/core/minion/PinotTaskManagerStatelessTest.java
 
b/pinot-controller/src/test/java/org/apache/pinot/controller/helix/core/minion/PinotTaskManagerStatelessTest.java
index 84a1a5d6a7..cf41d1114e 100644
--- 
a/pinot-controller/src/test/java/org/apache/pinot/controller/helix/core/minion/PinotTaskManagerStatelessTest.java
+++ 
b/pinot-controller/src/test/java/org/apache/pinot/controller/helix/core/minion/PinotTaskManagerStatelessTest.java
@@ -41,6 +41,8 @@ import org.quartz.Scheduler;
 import org.quartz.SchedulerException;
 import org.quartz.Trigger;
 import org.quartz.impl.matchers.GroupMatcher;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
@@ -53,6 +55,7 @@ public class PinotTaskManagerStatelessTest extends 
ControllerTest {
   private static final String RAW_TABLE_NAME = "myTable";
   private static final String OFFLINE_TABLE_NAME = 
TableNameBuilder.OFFLINE.tableNameWithType(RAW_TABLE_NAME);
   private static final long TIMEOUT_IN_MS = 10_000L;
+  private static final Logger LOGGER = 
LoggerFactory.getLogger(PinotTaskManagerStatelessTest.class);
 
   @BeforeClass
   public void setUp()
@@ -239,10 +242,22 @@ public class PinotTaskManagerStatelessTest extends 
ControllerTest {
         throw new RuntimeException(e);
       }
     }, TIMEOUT_IN_MS, "JobDetail exiting but missing JobTrigger");
-    List<? extends Trigger> triggersOfJob = scheduler.getTriggersOfJob(jobKey);
-    Trigger trigger = triggersOfJob.iterator().next();
-    assertTrue(trigger instanceof CronTrigger);
-    assertEquals(((CronTrigger) trigger).getCronExpression(), cronExpression);
+
+    // There is no guarantee that previous changes have been applied, 
therefore we need to
+    // retry the check for a bit
+    TestUtils.waitForCondition(aVoid -> {
+      try {
+        List<? extends Trigger> triggersOfJob = 
scheduler.getTriggersOfJob(jobKey);
+        Trigger trigger = triggersOfJob.iterator().next();
+        assertTrue(trigger instanceof CronTrigger);
+        assertEquals(((CronTrigger) trigger).getCronExpression(), 
cronExpression);
+      } catch (SchedulerException ex) {
+        throw new RuntimeException(ex);
+      } catch (AssertionError assertionError) {
+        LOGGER.warn("Unexpected cron expression. Hasn't been replicated yet?", 
assertionError);
+      }
+      return true;
+    }, TIMEOUT_IN_MS, 500L, "Cron expression didn't change to " + 
cronExpression);
   }
 
   @AfterClass


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to