minor, stablize DefaultSchedulerTest
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/a058bfb8 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/a058bfb8 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/a058bfb8 Branch: refs/heads/KYLIN-2361 Commit: a058bfb8b0490fe36b7fe4da026028411ed208a5 Parents: 546f88f Author: Li Yang <liy...@apache.org> Authored: Fri Feb 3 13:43:56 2017 +0800 Committer: Li Yang <liy...@apache.org> Committed: Fri Feb 3 13:43:56 2017 +0800 ---------------------------------------------------------------------- .../job/impl/threadpool/BaseSchedulerTest.java | 36 ++++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/a058bfb8/core-job/src/test/java/org/apache/kylin/job/impl/threadpool/BaseSchedulerTest.java ---------------------------------------------------------------------- diff --git a/core-job/src/test/java/org/apache/kylin/job/impl/threadpool/BaseSchedulerTest.java b/core-job/src/test/java/org/apache/kylin/job/impl/threadpool/BaseSchedulerTest.java index fdf5252..1ada9a1 100644 --- a/core-job/src/test/java/org/apache/kylin/job/impl/threadpool/BaseSchedulerTest.java +++ b/core-job/src/test/java/org/apache/kylin/job/impl/threadpool/BaseSchedulerTest.java @@ -31,11 +31,15 @@ import org.apache.kylin.job.execution.ExecutableState; import org.apache.kylin.job.lock.MockJobLock; import org.junit.After; import org.junit.Before; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** */ public abstract class BaseSchedulerTest extends LocalFileMetadataTestCase { + private static final Logger logger = LoggerFactory.getLogger(BaseSchedulerTest.class); + private DefaultScheduler scheduler; protected ExecutableManager jobService; @@ -70,19 +74,31 @@ public abstract class BaseSchedulerTest extends LocalFileMetadataTestCase { } protected void waitForJobFinish(String jobId) { - while (true) { - AbstractExecutable job = jobService.getJob(jobId); - final ExecutableState status = job.getStatus(); - if (status == ExecutableState.SUCCEED || status == ExecutableState.ERROR || status == ExecutableState.STOPPED || status == ExecutableState.DISCARDED) { - break; - } else { - try { - Thread.sleep(5000); - } catch (InterruptedException e) { - e.printStackTrace(); + int error = 0; + final int errorLimit = 3; + + while (error < errorLimit) { + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + try { + AbstractExecutable job = jobService.getJob(jobId); + ExecutableState status = job.getStatus(); + if (status == ExecutableState.SUCCEED || status == ExecutableState.ERROR || status == ExecutableState.STOPPED || status == ExecutableState.DISCARDED) { + break; } + } catch (Exception ex) { + logger.error("", ex); + error++; } } + + if (error >= errorLimit) { + throw new RuntimeException("waitForJobFinish() encounters exceptions, see logs above"); + } } protected void waitForJobStatus(String jobId, ExecutableState state, long interval) {