This is an automated email from the ASF dual-hosted git repository. dionusos pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/oozie.git
The following commit(s) were added to refs/heads/master by this push: new e78ffb563 OOZIE-3688 Introduce retry mechanism when starting embedded servlet containers in unit tests (jmakai via dionusos) e78ffb563 is described below commit e78ffb56310f4bee7ac053a448b2f25437f22321 Author: Denes Bodo <dionu...@apache.org> AuthorDate: Wed Dec 14 16:52:59 2022 +0100 OOZIE-3688 Introduce retry mechanism when starting embedded servlet containers in unit tests (jmakai via dionusos) --- .../oozie/test/EmbeddedServletContainer.java | 29 ++++++++++++++++++---- release-log.txt | 1 + 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/org/apache/oozie/test/EmbeddedServletContainer.java b/core/src/main/java/org/apache/oozie/test/EmbeddedServletContainer.java index 2fb099f7d..132a69ec9 100644 --- a/core/src/main/java/org/apache/oozie/test/EmbeddedServletContainer.java +++ b/core/src/main/java/org/apache/oozie/test/EmbeddedServletContainer.java @@ -49,6 +49,9 @@ public class EmbeddedServletContainer { private String contextPath; private ServletContextHandler context; + private static final int CONTAINER_START_DEFAULT_RETRIES = 30; + private static final long CONTAINER_START_DEFAULT_WAIT_BETWEEN_RETRIES_IN_SECS = 1; + /** * Create a servlet container. * @@ -121,14 +124,30 @@ public class EmbeddedServletContainer { } /** - * Start the servlet container. <p> The container starts on a free port or a specific port. + * Start the servlet container with retry mechanism. The default retry attempts are 30 with wait times of 30 seconds + * in between. The container starts on a free port or a specific port. * - * @throws Exception thrown if the container could not start. + * @throws Exception thrown if the container could not start after `retries` number of tries. */ public void start() throws Exception { - host = InetAddress.getLocalHost().getHostName(); - port = startServerWithPort(port); - System.out.println("Running embedded servlet container at: http://" + host + ":" + port); + for (int i = 0; i <= CONTAINER_START_DEFAULT_RETRIES; i++) { + try { + host = InetAddress.getLocalHost().getHostName(); + port = startServerWithPort(port); + System.out.println("Running embedded servlet container at: http://" + host + ":" + port); + break; + } catch (Exception ex) { + System.err.println("An exception is thrown while starting embedded servlet container at port: " + + port + ". Exception:\n" + ex.getMessage()); + + // throw exception if the last re-try fails + if (i >= CONTAINER_START_DEFAULT_RETRIES) { + throw ex; + } + + Thread.sleep(CONTAINER_START_DEFAULT_WAIT_BETWEEN_RETRIES_IN_SECS * 1000); + } + } } /** diff --git a/release-log.txt b/release-log.txt index 15f3e58ff..8f067d7ad 100644 --- a/release-log.txt +++ b/release-log.txt @@ -1,5 +1,6 @@ -- Oozie 5.3.0 release (trunk - unreleased) +OOZIE-3688 Introduce retry mechanism when starting embedded servlet containers in unit tests (jmakai via dionusos) OOZIE-3685 Repair flaky testCoordActionInputCheckXCommandUniqueness unit test (jmakai via dionusos) OOZIE-3686 Repair flaky testRetryConsoleUrlForked unit test (jmakai via dionusos) OOZIE-3684 Migrate to commons-lang3 again (jmakai via dionusos)