Repository: oozie Updated Branches: refs/heads/master 0034f7f47 -> 2e6b50ad1
OOZIE-3070 Remove references to org.mortbay.jetty (pbacsko) Project: http://git-wip-us.apache.org/repos/asf/oozie/repo Commit: http://git-wip-us.apache.org/repos/asf/oozie/commit/2e6b50ad Tree: http://git-wip-us.apache.org/repos/asf/oozie/tree/2e6b50ad Diff: http://git-wip-us.apache.org/repos/asf/oozie/diff/2e6b50ad Branch: refs/heads/master Commit: 2e6b50ad128d8b0b2ac9f9afc88f56b76bd17abb Parents: 0034f7f Author: Peter Bacsko <[email protected]> Authored: Fri Sep 29 11:00:15 2017 +0200 Committer: Peter Bacsko <[email protected]> Committed: Fri Sep 29 11:00:15 2017 +0200 ---------------------------------------------------------------------- core/pom.xml | 11 ++-- .../oozie/test/EmbeddedServletContainer.java | 55 ++++++++++++------ .../hadoop/TestLauncherAMCallbackNotifier.java | 4 +- .../org/apache/oozie/client/TestOozieCLI.java | 2 +- .../wf/TestWorkflowNotificationXCommand.java | 59 +++++++++++++------- pom.xml | 6 -- release-log.txt | 1 + sharelib/hive2/pom.xml | 4 ++ sharelib/spark/pom.xml | 6 ++ 9 files changed, 99 insertions(+), 49 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/oozie/blob/2e6b50ad/core/pom.xml ---------------------------------------------------------------------- diff --git a/core/pom.xml b/core/pom.xml index b080954..57a5ad5 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -266,7 +266,6 @@ <scope>compile</scope> </dependency> - <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> @@ -313,11 +312,15 @@ </dependency> <dependency> - <groupId>org.mortbay.jetty</groupId> - <artifactId>jetty</artifactId> - <scope>compile</scope> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-server</artifactId> </dependency> <dependency> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-servlet</artifactId> + </dependency> + + <dependency> <groupId>org.apache.derby</groupId> <artifactId>derby</artifactId> <scope>compile</scope> http://git-wip-us.apache.org/repos/asf/oozie/blob/2e6b50ad/core/src/main/java/org/apache/oozie/test/EmbeddedServletContainer.java ---------------------------------------------------------------------- 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 eeb7717..f14f663 100644 --- a/core/src/main/java/org/apache/oozie/test/EmbeddedServletContainer.java +++ b/core/src/main/java/org/apache/oozie/test/EmbeddedServletContainer.java @@ -18,15 +18,23 @@ package org.apache.oozie.test; -import org.mortbay.jetty.Server; -import org.mortbay.jetty.servlet.FilterHolder; -import org.mortbay.jetty.servlet.ServletHolder; -import org.mortbay.jetty.servlet.Context; +import org.eclipse.jetty.server.Connector; +import org.eclipse.jetty.server.HttpConfiguration; +import org.eclipse.jetty.server.HttpConnectionFactory; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.ServerConnector; +import org.eclipse.jetty.servlet.FilterHolder; +import org.eclipse.jetty.servlet.ServletHolder; +import org.eclipse.jetty.servlet.ServletContextHandler; import java.net.InetAddress; -import java.net.ServerSocket; +import java.util.EnumSet; import java.util.Map; +import javax.servlet.DispatcherType; +import javax.servlet.Filter; +import javax.servlet.Servlet; + /** * An embedded servlet container for testing purposes. <p> It provides reduced functionality, it supports only * Servlets. <p> The servlet container is started in a free port. @@ -36,7 +44,7 @@ public class EmbeddedServletContainer { private String host = null; private int port = -1; private String contextPath; - Context context; + private ServletContextHandler context; /** * Create a servlet container. @@ -47,7 +55,7 @@ public class EmbeddedServletContainer { public EmbeddedServletContainer(String contextPath) { this.contextPath = contextPath; server = new Server(0); - context = new Context(); + context = new ServletContextHandler(); context.setContextPath("/" + contextPath); server.setHandler(context); } @@ -60,12 +68,12 @@ public class EmbeddedServletContainer { * @param servletClass servlet class * @param initParams a mapping of init parameters for the servlet, or null */ - public void addServletEndpoint(String servletPath, Class servletClass, Map<String, String> initParams) { - ServletHolder s = new ServletHolder(servletClass); - context.addServlet(s, servletPath); + public void addServletEndpoint(String servletPath, Class<? extends Servlet> servletClass, Map<String, String> initParams) { + ServletHolder holder = new ServletHolder(servletClass); if (initParams != null) { - s.setInitParameters(initParams); + holder.setInitParameters(initParams); } + context.addServlet(holder, servletPath); } /** @@ -75,19 +83,31 @@ public class EmbeddedServletContainer { * the end. * @param servletClass servlet class */ - public void addServletEndpoint(String servletPath, Class servletClass) { + public void addServletEndpoint(String servletPath, Class<? extends Servlet> servletClass) { addServletEndpoint(servletPath, servletClass, null); } /** + * Add a servlet instance to the container. + * + * @param servletPath servlet path for the servlet, it should be prefixed with '/", it may contain a wild card at + * the end. + * @param servletClass servlet instance + */ + public void addServletEndpoint(String servletPath, Servlet servlet) { + ServletHolder holder = new ServletHolder(servlet); + context.addServlet(holder, servletPath); + } + + /** * Add a filter to the container. * * @param filterPath path for the filter, it should be prefixed with '/", it may contain a wild card at * the end. * @param filterClass servlet class */ - public void addFilter(String filterPath, Class filterClass) { - context.addFilter(new FilterHolder(filterClass), filterPath, 0); + public void addFilter(String filterPath, Class<? extends Filter> filterClass) { + context.addFilter(new FilterHolder(filterClass), filterPath, EnumSet.of(DispatcherType.REQUEST)); } /** @@ -97,9 +117,11 @@ public class EmbeddedServletContainer { */ public void start() throws Exception { host = InetAddress.getLocalHost().getHostName(); - server.getConnectors()[0].setHost(host); + ServerConnector connector = new ServerConnector(server, new HttpConnectionFactory(new HttpConfiguration())); + connector.setHost(host); + server.setConnectors(new Connector[] { connector }); server.start(); - port = server.getConnectors()[0].getLocalPort(); + port = connector.getLocalPort(); System.out.println("Running embedded servlet container at: http://" + host + ":" + port); } @@ -165,5 +187,4 @@ public class EmbeddedServletContainer { host = null; port = -1; } - } http://git-wip-us.apache.org/repos/asf/oozie/blob/2e6b50ad/core/src/test/java/org/apache/oozie/action/hadoop/TestLauncherAMCallbackNotifier.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/oozie/action/hadoop/TestLauncherAMCallbackNotifier.java b/core/src/test/java/org/apache/oozie/action/hadoop/TestLauncherAMCallbackNotifier.java index 1f7e5b2..0219304 100644 --- a/core/src/test/java/org/apache/oozie/action/hadoop/TestLauncherAMCallbackNotifier.java +++ b/core/src/test/java/org/apache/oozie/action/hadoop/TestLauncherAMCallbackNotifier.java @@ -32,6 +32,8 @@ import java.net.Proxy; import java.util.HashMap; import java.util.Map; +import javax.servlet.Servlet; + // A lot of this adapted from org.apache.hadoop.mapreduce.v2.app.TestJobEndNotifier and org.apache.hadoop.mapred.TestJobEndNotifier public class TestLauncherAMCallbackNotifier extends XTestCase { private EmbeddedServletContainer container; @@ -170,7 +172,7 @@ public class TestLauncherAMCallbackNotifier extends XTestCase { waitForCallbackAndCheckResult(FinalApplicationStatus.FAILED.toString()); } - private Configuration setupEmbeddedContainer(Class<?> servletClass, String servletEndPoint, + private Configuration setupEmbeddedContainer(Class<? extends Servlet> servletClass, String servletEndPoint, String servletUrl, Map<String, String> params) throws Exception { container = new EmbeddedServletContainer("test"); if (servletEndPoint != null) { http://git-wip-us.apache.org/repos/asf/oozie/blob/2e6b50ad/core/src/test/java/org/apache/oozie/client/TestOozieCLI.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/oozie/client/TestOozieCLI.java b/core/src/test/java/org/apache/oozie/client/TestOozieCLI.java index 6fcdf24..cf76631 100644 --- a/core/src/test/java/org/apache/oozie/client/TestOozieCLI.java +++ b/core/src/test/java/org/apache/oozie/client/TestOozieCLI.java @@ -70,7 +70,7 @@ public class TestOozieCLI extends DagServletTestCase { static final String VERSION = "/v" + OozieClient.WS_PROTOCOL_VERSION; static final String[] END_POINTS = {"/versions", VERSION + "/jobs", VERSION + "/job/*", VERSION + "/admin/*", VERSION + "/validate/*", "/v1/sla"}; - static final Class[] SERVLET_CLASSES = { HeaderTestingVersionServlet.class, V1JobsServlet.class, + static final Class<?>[] SERVLET_CLASSES = { HeaderTestingVersionServlet.class, V1JobsServlet.class, V2JobServlet.class, V2AdminServlet.class, V2ValidateServlet.class, SLAServlet.class}; @Override http://git-wip-us.apache.org/repos/asf/oozie/blob/2e6b50ad/core/src/test/java/org/apache/oozie/command/wf/TestWorkflowNotificationXCommand.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/oozie/command/wf/TestWorkflowNotificationXCommand.java b/core/src/test/java/org/apache/oozie/command/wf/TestWorkflowNotificationXCommand.java index ef342a4..2f5171e 100644 --- a/core/src/test/java/org/apache/oozie/command/wf/TestWorkflowNotificationXCommand.java +++ b/core/src/test/java/org/apache/oozie/command/wf/TestWorkflowNotificationXCommand.java @@ -35,32 +35,51 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.locks.Condition; +import java.util.concurrent.locks.ReentrantLock; public class TestWorkflowNotificationXCommand extends XTestCase { private EmbeddedServletContainer container; + private CallbackServlet callbackServlet; + @SuppressWarnings("serial") public static class CallbackServlet extends HttpServlet { - public static volatile String JOB_ID = null; - public static String NODE_NAME = null; - public static String STATUS = null; - public static String PARENT_ID = null; - - public static void reset() { - JOB_ID = null; - NODE_NAME = null; - STATUS = null; - PARENT_ID = null; - } + String jobID = null; + String nodeName = null; + String status = null; + String parentID = null; + final ReentrantLock lock = new ReentrantLock(); + final Condition updated = lock.newCondition(); + boolean requestProcessed = false; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - JOB_ID = req.getParameter("jobId"); - NODE_NAME = req.getParameter("nodeName"); - STATUS = req.getParameter("status"); - PARENT_ID = req.getParameter("parentId"); + jobID = req.getParameter("jobId"); + nodeName = req.getParameter("nodeName"); + status = req.getParameter("status"); + parentID = req.getParameter("parentId"); resp.setStatus(HttpServletResponse.SC_OK); + + lock.lock(); + try { + requestProcessed = true; + updated.signalAll(); + } finally { + lock.unlock(); + } } + public void waitUntilRequestProcessed() throws InterruptedException { + lock.lock(); + try { + while (!requestProcessed) { + updated.await(10, TimeUnit.SECONDS); + } + } finally { + lock.unlock(); + } + } } @Override @@ -71,8 +90,8 @@ public class TestWorkflowNotificationXCommand extends XTestCase { services.init(); container = new EmbeddedServletContainer("blah"); container.addServletEndpoint("/hang/*", HangServlet.class); - CallbackServlet.reset(); - container.addServletEndpoint("/callback/*", CallbackServlet.class); + callbackServlet = new CallbackServlet(); + container.addServletEndpoint("/callback/*", callbackServlet); container.start(); } @@ -110,7 +129,6 @@ public class TestWorkflowNotificationXCommand extends XTestCase { } public void testWFNotification() throws Exception { - String notificationUrl = "/callback/wf?jobId=$jobId&parentId=$parentId"; _testNotificationParentId(notificationUrl, "1", null, ""); @@ -139,8 +157,9 @@ public class TestWorkflowNotificationXCommand extends XTestCase { WorkflowNotificationXCommand command = new WorkflowNotificationXCommand(workflow); command.setRetry(3); command.call(); + callbackServlet.waitUntilRequestProcessed(); - Assert.assertEquals(jobId, CallbackServlet.JOB_ID); - Assert.assertEquals(expectedParentId, CallbackServlet.PARENT_ID); + Assert.assertEquals(jobId, callbackServlet.jobID); + Assert.assertEquals(expectedParentId, callbackServlet.parentID); } } http://git-wip-us.apache.org/repos/asf/oozie/blob/2e6b50ad/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index efccc34..0b94484 100644 --- a/pom.xml +++ b/pom.xml @@ -1256,12 +1256,6 @@ </dependency> <dependency> - <groupId>org.mortbay.jetty</groupId> - <artifactId>jetty</artifactId> - <version>6.1.14</version> - </dependency> - - <dependency> <groupId>commons-pool</groupId> <artifactId>commons-pool</artifactId> <version>1.5.4</version> http://git-wip-us.apache.org/repos/asf/oozie/blob/2e6b50ad/release-log.txt ---------------------------------------------------------------------- diff --git a/release-log.txt b/release-log.txt index 7b393ba..0b8a109 100644 --- a/release-log.txt +++ b/release-log.txt @@ -1,5 +1,6 @@ -- Oozie 5.0.0 release (trunk - unreleased) +OOZIE-3070 Remove references to org.mortbay.jetty (pbacsko) OOZIE-2885 Running Spark actions should not need Hive on the classpath (satishsaley) OOZIE-2909 amend Fix license headers (andras.piros via gezapeti) OOZIE-3054 Disable erasure coding for sharelib if Oozie runs on Hadoop 3 (pbacsko) http://git-wip-us.apache.org/repos/asf/oozie/blob/2e6b50ad/sharelib/hive2/pom.xml ---------------------------------------------------------------------- diff --git a/sharelib/hive2/pom.xml b/sharelib/hive2/pom.xml index b74e51a..195d5d1 100644 --- a/sharelib/hive2/pom.xml +++ b/sharelib/hive2/pom.xml @@ -44,6 +44,10 @@ <scope>compile</scope> <exclusions> <exclusion> + <artifactId>jetty</artifactId> + <groupId>org.mortbay.jetty</groupId> + </exclusion> + <exclusion> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-core</artifactId> </exclusion> http://git-wip-us.apache.org/repos/asf/oozie/blob/2e6b50ad/sharelib/spark/pom.xml ---------------------------------------------------------------------- diff --git a/sharelib/spark/pom.xml b/sharelib/spark/pom.xml index eb80439..b1fab10 100644 --- a/sharelib/spark/pom.xml +++ b/sharelib/spark/pom.xml @@ -198,6 +198,12 @@ <artifactId>spark-streaming-flume_${spark.scala.binary.version}</artifactId> <version>${spark.version}</version> <scope>compile</scope> + <exclusions> + <exclusion> + <groupId>org.mortbay.jetty</groupId> + <artifactId>jetty</artifactId> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>org.apache.spark</groupId>
