From 4455856e9c7a69ceb7888a5021be058c25f1ac65 Mon Sep 17 00:00:00 2001 From: Duo Zhang Date: Tue, 25 Aug 2020 12:05:52 +0800 Subject: [PATCH] HBASE-23834 HBase fails to run on Hadoop 3.3.0/3.2.2/3.1.4 due to jetty version mismatch (#2222) Signed-off-by: Viraj Jasani Signed-off-by: Josh Elser Signed-off-by: Peter Somogyi --- hbase-http/pom.xml | 48 ++---- .../hbase/http/AdminAuthorizedServlet.java | 5 +- .../hadoop/hbase/http/HttpRequestLog.java | 4 +- .../apache/hadoop/hbase/http/HttpServer.java | 47 +++--- .../hadoop/hbase/http/HttpServerUtil.java | 9 +- .../hbase/http/ProfileOutputServlet.java | 5 +- .../hbase/http/HttpServerFunctionalTest.java | 2 +- .../hadoop/hbase/http/TestHttpRequestLog.java | 5 +- .../hadoop/hbase/http/TestHttpServer.java | 5 +- .../http/TestProxyUserSpnegoHttpServer.java | 7 +- .../hbase/http/conf/TestConfServlet.java | 3 +- .../hbase/http/resource/JerseyResource.java | 5 +- hbase-it/pom.xml | 17 +-- .../apache/hadoop/hbase/MockHttpApiRule.java | 15 +- .../hadoop/hbase/RESTApiClusterManager.java | 4 +- .../services/javax.ws.rs.client.ClientBuilder | 16 ++ .../main/resources/supplemental-models.xml | 57 +++++++ hbase-rest/pom.xml | 24 --- .../apache/hadoop/hbase/rest/RESTServer.java | 31 ++-- .../hbase/rest/RESTServletContainer.java | 7 +- .../hadoop/hbase/rest/model/VersionModel.java | 7 +- hbase-server/pom.xml | 12 -- .../apache/hadoop/hbase/master/HMaster.java | 11 +- .../ensure-jars-have-correct-contents.sh | 3 + hbase-shaded/hbase-shaded-client/pom.xml | 6 +- .../hbase-shaded-testing-util/pom.xml | 5 + .../ensure-jars-have-correct-contents.sh | 3 + hbase-shaded/pom.xml | 6 + hbase-thrift/pom.xml | 16 -- .../hadoop/hbase/thrift/ThriftServer.java | 23 ++- pom.xml | 144 +++++++++--------- 31 files changed, 284 insertions(+), 268 deletions(-) create mode 100644 hbase-it/src/test/resources/META-INF/services/javax.ws.rs.client.ClientBuilder diff --git a/hbase-http/pom.xml b/hbase-http/pom.xml index 328ba943226..e392093c048 100644 --- a/hbase-http/pom.xml +++ b/hbase-http/pom.xml @@ -163,40 +163,12 @@ true - org.eclipse.jetty - jetty-server + org.apache.hbase.thirdparty + hbase-shaded-jetty - org.eclipse.jetty - jetty-servlet - - - org.eclipse.jetty - jetty-util - - - org.eclipse.jetty - jetty-util-ajax - - - org.eclipse.jetty - jetty-webapp - - - org.eclipse.jetty - jetty-http - - - org.eclipse.jetty - jetty-security - - - org.glassfish.jersey.core - jersey-server - - - org.glassfish.jersey.containers - jersey-container-servlet-core + org.apache.hbase.thirdparty + hbase-shaded-jersey @@ -280,6 +252,18 @@ + + build-with-jdk11 + + [1.11,) + + + + javax.xml.bind + jaxb-api + + + apache-release diff --git a/hbase-http/src/main/java/org/apache/hadoop/hbase/http/AdminAuthorizedServlet.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/AdminAuthorizedServlet.java index bd8570e245b..10156f43b44 100644 --- a/hbase-http/src/main/java/org/apache/hadoop/hbase/http/AdminAuthorizedServlet.java +++ b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/AdminAuthorizedServlet.java @@ -18,14 +18,13 @@ package org.apache.hadoop.hbase.http; import java.io.IOException; - import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - import org.apache.yetus.audience.InterfaceAudience; import org.apache.yetus.audience.InterfaceStability; -import org.eclipse.jetty.servlet.DefaultServlet; + +import org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.DefaultServlet; /** * General servlet which is admin-authorized. diff --git a/hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpRequestLog.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpRequestLog.java index 0eb66a7c72c..57f40c4b482 100644 --- a/hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpRequestLog.java +++ b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpRequestLog.java @@ -18,10 +18,10 @@ package org.apache.hadoop.hbase.http; import org.apache.yetus.audience.InterfaceAudience; -import org.eclipse.jetty.server.RequestLog; -import org.eclipse.jetty.server.Slf4jRequestLog; import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableMap; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.RequestLog; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.Slf4jRequestLog; /** * RequestLog object for use with Http diff --git a/hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpServer.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpServer.java index d3176cabad0..50a6fe5131c 100644 --- a/hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpServer.java +++ b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpServer.java @@ -36,7 +36,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; - import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; @@ -65,35 +64,35 @@ import org.apache.hadoop.security.authorize.ProxyUsers; import org.apache.hadoop.util.Shell; import org.apache.yetus.audience.InterfaceAudience; import org.apache.yetus.audience.InterfaceStability; -import org.eclipse.jetty.http.HttpVersion; -import org.eclipse.jetty.server.Handler; -import org.eclipse.jetty.server.HttpConfiguration; -import org.eclipse.jetty.server.HttpConnectionFactory; -import org.eclipse.jetty.server.RequestLog; -import org.eclipse.jetty.server.SecureRequestCustomizer; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.server.SslConnectionFactory; -import org.eclipse.jetty.server.handler.ContextHandlerCollection; -import org.eclipse.jetty.server.handler.HandlerCollection; -import org.eclipse.jetty.server.handler.RequestLogHandler; -import org.eclipse.jetty.servlet.DefaultServlet; -import org.eclipse.jetty.servlet.FilterHolder; -import org.eclipse.jetty.servlet.FilterMapping; -import org.eclipse.jetty.servlet.ServletContextHandler; -import org.eclipse.jetty.servlet.ServletHolder; -import org.eclipse.jetty.util.MultiException; -import org.eclipse.jetty.util.ssl.SslContextFactory; -import org.eclipse.jetty.util.thread.QueuedThreadPool; -import org.eclipse.jetty.webapp.WebAppContext; -import org.glassfish.jersey.server.ResourceConfig; -import org.glassfish.jersey.servlet.ServletContainer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting; import org.apache.hbase.thirdparty.com.google.common.base.Preconditions; import org.apache.hbase.thirdparty.com.google.common.collect.Lists; +import org.apache.hbase.thirdparty.org.eclipse.jetty.http.HttpVersion; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.Handler; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.HttpConfiguration; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.HttpConnectionFactory; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.RequestLog; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.SecureRequestCustomizer; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.Server; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.ServerConnector; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.SslConnectionFactory; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.ContextHandlerCollection; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.HandlerCollection; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.RequestLogHandler; +import org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.DefaultServlet; +import org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.FilterHolder; +import org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.FilterMapping; +import org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.ServletContextHandler; +import org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.ServletHolder; +import org.apache.hbase.thirdparty.org.eclipse.jetty.util.MultiException; +import org.apache.hbase.thirdparty.org.eclipse.jetty.util.ssl.SslContextFactory; +import org.apache.hbase.thirdparty.org.eclipse.jetty.util.thread.QueuedThreadPool; +import org.apache.hbase.thirdparty.org.eclipse.jetty.webapp.WebAppContext; +import org.apache.hbase.thirdparty.org.glassfish.jersey.server.ResourceConfig; +import org.apache.hbase.thirdparty.org.glassfish.jersey.servlet.ServletContainer; /** * Create a Jetty embedded server to answer http requests. The primary goal diff --git a/hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpServerUtil.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpServerUtil.java index e41daf31079..94269719aa4 100644 --- a/hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpServerUtil.java +++ b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/HttpServerUtil.java @@ -18,10 +18,11 @@ package org.apache.hadoop.hbase.http; import org.apache.yetus.audience.InterfaceAudience; -import org.eclipse.jetty.security.ConstraintMapping; -import org.eclipse.jetty.security.ConstraintSecurityHandler; -import org.eclipse.jetty.servlet.ServletContextHandler; -import org.eclipse.jetty.util.security.Constraint; + +import org.apache.hbase.thirdparty.org.eclipse.jetty.security.ConstraintMapping; +import org.apache.hbase.thirdparty.org.eclipse.jetty.security.ConstraintSecurityHandler; +import org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.ServletContextHandler; +import org.apache.hbase.thirdparty.org.eclipse.jetty.util.security.Constraint; /** * HttpServer utility. diff --git a/hbase-http/src/main/java/org/apache/hadoop/hbase/http/ProfileOutputServlet.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/ProfileOutputServlet.java index aa3455e684f..d77ea9b14ce 100644 --- a/hbase-http/src/main/java/org/apache/hadoop/hbase/http/ProfileOutputServlet.java +++ b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/ProfileOutputServlet.java @@ -20,16 +20,15 @@ package org.apache.hadoop.hbase.http; import java.io.File; import java.io.IOException; import java.util.regex.Pattern; - import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - import org.apache.yetus.audience.InterfaceAudience; -import org.eclipse.jetty.servlet.DefaultServlet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.DefaultServlet; + /** * Servlet to serve files generated by {@link ProfileServlet} */ diff --git a/hbase-http/src/test/java/org/apache/hadoop/hbase/http/HttpServerFunctionalTest.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/HttpServerFunctionalTest.java index 1be7297536e..7f1223980e3 100644 --- a/hbase-http/src/test/java/org/apache/hadoop/hbase/http/HttpServerFunctionalTest.java +++ b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/HttpServerFunctionalTest.java @@ -46,7 +46,7 @@ public class HttpServerFunctionalTest extends Assert { /** JVM property for the webapp test dir : {@value} */ public static final String TEST_BUILD_WEBAPPS = "test.build.webapps"; /** expected location of the test.build.webapps dir: {@value} */ - private static final String BUILD_WEBAPPS_DIR = "src/main/resources/hbase-webapps"; + private static final String BUILD_WEBAPPS_DIR = "src/test/resources/webapps"; /** name of the test webapp: {@value} */ private static final String TEST = "test"; diff --git a/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestHttpRequestLog.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestHttpRequestLog.java index eef5e7b6538..e8a6b06d248 100644 --- a/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestHttpRequestLog.java +++ b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestHttpRequestLog.java @@ -23,12 +23,13 @@ import static org.junit.Assert.assertNotNull; import org.apache.hadoop.hbase.HBaseClassTestRule; import org.apache.hadoop.hbase.testclassification.MiscTests; import org.apache.hadoop.hbase.testclassification.SmallTests; -import org.eclipse.jetty.server.RequestLog; -import org.eclipse.jetty.server.Slf4jRequestLog; import org.junit.ClassRule; import org.junit.Test; import org.junit.experimental.categories.Category; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.RequestLog; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.Slf4jRequestLog; + @Category({ MiscTests.class, SmallTests.class }) public class TestHttpRequestLog { diff --git a/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestHttpServer.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestHttpServer.java index 881c66ac208..acd2735d6be 100644 --- a/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestHttpServer.java +++ b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestHttpServer.java @@ -56,8 +56,6 @@ import org.apache.hadoop.security.Groups; import org.apache.hadoop.security.ShellBasedUnixGroupsMapping; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.security.authorize.AccessControlList; -import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.util.ajax.JSON; import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; @@ -69,6 +67,9 @@ import org.mockito.Mockito; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.ServerConnector; +import org.apache.hbase.thirdparty.org.eclipse.jetty.util.ajax.JSON; + @Category({MiscTests.class, SmallTests.class}) public class TestHttpServer extends HttpServerFunctionalTest { @ClassRule diff --git a/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestProxyUserSpnegoHttpServer.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestProxyUserSpnegoHttpServer.java index 804c837178c..ed98a2f5a7f 100644 --- a/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestProxyUserSpnegoHttpServer.java +++ b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestProxyUserSpnegoHttpServer.java @@ -263,10 +263,11 @@ public class TestProxyUserSpnegoHttpServer extends HttpServerFunctionalTest { assertNotNull(resp); assertEquals(responseCode, resp.getStatusLine().getStatusCode()); - if(responseCode == HttpURLConnection.HTTP_OK) { - assertTrue(EntityUtils.toString(resp.getEntity()).trim().contains("a:b")); + if (responseCode == HttpURLConnection.HTTP_OK) { + assertTrue(EntityUtils.toString(resp.getEntity()).trim().contains("a:b")); } else { - assertTrue(resp.getStatusLine().toString().contains(statusLine)); + assertTrue(resp.getStatusLine().toString().contains(statusLine) || + EntityUtils.toString(resp.getEntity()).contains(statusLine)); } } diff --git a/hbase-http/src/test/java/org/apache/hadoop/hbase/http/conf/TestConfServlet.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/conf/TestConfServlet.java index 53e129fa872..c07ed0a8d9a 100644 --- a/hbase-http/src/test/java/org/apache/hadoop/hbase/http/conf/TestConfServlet.java +++ b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/conf/TestConfServlet.java @@ -29,7 +29,6 @@ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseClassTestRule; import org.apache.hadoop.hbase.testclassification.MiscTests; import org.apache.hadoop.hbase.testclassification.SmallTests; -import org.eclipse.jetty.util.ajax.JSON; import org.junit.ClassRule; import org.junit.Test; import org.junit.experimental.categories.Category; @@ -39,6 +38,8 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; +import org.apache.hbase.thirdparty.org.eclipse.jetty.util.ajax.JSON; + /** * Basic test case that the ConfServlet can write configuration * to its output in XML and JSON format. diff --git a/hbase-http/src/test/java/org/apache/hadoop/hbase/http/resource/JerseyResource.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/resource/JerseyResource.java index 593b1c22248..c3b731f9779 100644 --- a/hbase-http/src/test/java/org/apache/hadoop/hbase/http/resource/JerseyResource.java +++ b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/resource/JerseyResource.java @@ -20,7 +20,6 @@ package org.apache.hadoop.hbase.http.resource; import java.io.IOException; import java.util.Map; import java.util.TreeMap; - import javax.ws.rs.DefaultValue; import javax.ws.rs.GET; import javax.ws.rs.Path; @@ -29,11 +28,11 @@ import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; - -import org.eclipse.jetty.util.ajax.JSON; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.apache.hbase.thirdparty.org.eclipse.jetty.util.ajax.JSON; + /** * A simple Jersey resource class TestHttpServer. * The servlet simply puts the path and the op parameter in a map diff --git a/hbase-it/pom.xml b/hbase-it/pom.xml index e988f7ea46e..d4521291d72 100644 --- a/hbase-it/pom.xml +++ b/hbase-it/pom.xml @@ -50,6 +50,9 @@ META-INF/LICENSE + + src/test/resources + @@ -247,10 +250,6 @@ org.apache.htrace htrace-core4 - - org.glassfish.jersey.core - jersey-client - io.netty @@ -283,16 +282,6 @@ javax.servlet test - - org.eclipse.jetty - jetty-server - test - - - org.eclipse.jetty - jetty-util - test - junit junit diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/MockHttpApiRule.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/MockHttpApiRule.java index d35d8f9c518..99e44ccf36d 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/MockHttpApiRule.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/MockHttpApiRule.java @@ -29,17 +29,18 @@ import java.util.regex.Pattern; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.ws.rs.core.MediaType; -import org.eclipse.jetty.server.Request; -import org.eclipse.jetty.server.RequestLog; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.server.Slf4jRequestLog; -import org.eclipse.jetty.server.handler.AbstractHandler; -import org.eclipse.jetty.util.RegexSet; import org.junit.rules.ExternalResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.Request; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.RequestLog; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.Server; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.ServerConnector; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.Slf4jRequestLog; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.handler.AbstractHandler; +import org.apache.hbase.thirdparty.org.eclipse.jetty.util.RegexSet; + /** * A {@link org.junit.Rule} that manages a simple http server. The caller registers request * handlers to URI path regexp. diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/RESTApiClusterManager.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/RESTApiClusterManager.java index 10954ce164b..4b72a9dbcf1 100644 --- a/hbase-it/src/test/java/org/apache/hadoop/hbase/RESTApiClusterManager.java +++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/RESTApiClusterManager.java @@ -22,6 +22,7 @@ import static org.apache.hadoop.hbase.HBaseClusterManager.DEFAULT_RETRY_ATTEMPTS import static org.apache.hadoop.hbase.HBaseClusterManager.DEFAULT_RETRY_SLEEP_INTERVAL; import static org.apache.hadoop.hbase.HBaseClusterManager.RETRY_ATTEMPTS_KEY; import static org.apache.hadoop.hbase.HBaseClusterManager.RETRY_SLEEP_INTERVAL_KEY; + import java.io.IOException; import java.net.URI; import java.util.Collections; @@ -47,12 +48,13 @@ import org.apache.hadoop.hbase.util.RetryCounter; import org.apache.hadoop.hbase.util.RetryCounter.RetryConfig; import org.apache.hadoop.hbase.util.RetryCounterFactory; import org.apache.hadoop.util.ReflectionUtils; -import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + import org.apache.hbase.thirdparty.com.google.gson.JsonElement; import org.apache.hbase.thirdparty.com.google.gson.JsonObject; import org.apache.hbase.thirdparty.com.google.gson.JsonParser; +import org.apache.hbase.thirdparty.org.glassfish.jersey.client.authentication.HttpAuthenticationFeature; /** * A ClusterManager implementation designed to control Cloudera Manager (http://www.cloudera.com) diff --git a/hbase-it/src/test/resources/META-INF/services/javax.ws.rs.client.ClientBuilder b/hbase-it/src/test/resources/META-INF/services/javax.ws.rs.client.ClientBuilder new file mode 100644 index 00000000000..558299b9789 --- /dev/null +++ b/hbase-it/src/test/resources/META-INF/services/javax.ws.rs.client.ClientBuilder @@ -0,0 +1,16 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +org.apache.hbase.thirdparty.org.glassfish.jersey.client.JerseyClientBuilder \ No newline at end of file diff --git a/hbase-resource-bundle/src/main/resources/supplemental-models.xml b/hbase-resource-bundle/src/main/resources/supplemental-models.xml index ec2ea812297..21ada4c9d9a 100644 --- a/hbase-resource-bundle/src/main/resources/supplemental-models.xml +++ b/hbase-resource-bundle/src/main/resources/supplemental-models.xml @@ -3265,4 +3265,61 @@ Copyright (c) 2007-2017 The JRuby project + + + jakarta.validation + jakarta.validation-api + Jakarta Bean Validation API + + + Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + + + jakarta.ws.rs + jakarta.ws.rs-api + Jakarta RESTful Web Services + + + Eclipse Public License 2.0 + https://www.eclipse.org/legal/epl-v20.html + repo + + + + + + + org.glassfish.hk2.external + jakarta.inject + Injection API (JSR 330) repackaged as OSGi bundle + + + Eclipse Public License 2.0 + https://www.eclipse.org/legal/epl-v20.html + repo + + + + + + + javax.ws.rs + javax.ws.rs-api + 2.1.1 + Java API for RESTful Web Services + + + Eclipse Public License 2.0 + https://www.eclipse.org/legal/epl-v20.html + repo + + + + diff --git a/hbase-rest/pom.xml b/hbase-rest/pom.xml index f62daee02ba..9d0efb5be4d 100644 --- a/hbase-rest/pom.xml +++ b/hbase-rest/pom.xml @@ -278,30 +278,6 @@ com.sun.activation javax.activation - - org.eclipse.jetty - jetty-server - - - org.eclipse.jetty - jetty-servlet - - - org.eclipse.jetty - jetty-util - - - org.eclipse.jetty - jetty-http - - - org.eclipse.jetty - jetty-jmx - - - org.glassfish.jersey.containers - jersey-container-servlet-core - com.fasterxml.jackson.jaxrs jackson-jaxrs-json-provider diff --git a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java index 32605ae63f9..6e16fd1a4fd 100644 --- a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java +++ b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServer.java @@ -45,29 +45,30 @@ import org.apache.hadoop.hbase.util.ReflectionUtils; import org.apache.hadoop.hbase.util.Strings; import org.apache.hadoop.hbase.util.VersionInfo; import org.apache.yetus.audience.InterfaceAudience; -import org.eclipse.jetty.http.HttpVersion; -import org.eclipse.jetty.jmx.MBeanContainer; -import org.eclipse.jetty.server.HttpConfiguration; -import org.eclipse.jetty.server.HttpConnectionFactory; -import org.eclipse.jetty.server.SecureRequestCustomizer; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.server.SslConnectionFactory; -import org.eclipse.jetty.servlet.FilterHolder; -import org.eclipse.jetty.servlet.ServletContextHandler; -import org.eclipse.jetty.servlet.ServletHolder; -import org.eclipse.jetty.util.ssl.SslContextFactory; -import org.eclipse.jetty.util.thread.QueuedThreadPool; -import org.glassfish.jersey.server.ResourceConfig; -import org.glassfish.jersey.servlet.ServletContainer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + import org.apache.hbase.thirdparty.com.google.common.base.Preconditions; import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine; import org.apache.hbase.thirdparty.org.apache.commons.cli.HelpFormatter; import org.apache.hbase.thirdparty.org.apache.commons.cli.Options; import org.apache.hbase.thirdparty.org.apache.commons.cli.ParseException; import org.apache.hbase.thirdparty.org.apache.commons.cli.PosixParser; +import org.apache.hbase.thirdparty.org.eclipse.jetty.http.HttpVersion; +import org.apache.hbase.thirdparty.org.eclipse.jetty.jmx.MBeanContainer; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.HttpConfiguration; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.HttpConnectionFactory; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.SecureRequestCustomizer; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.Server; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.ServerConnector; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.SslConnectionFactory; +import org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.FilterHolder; +import org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.ServletContextHandler; +import org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.ServletHolder; +import org.apache.hbase.thirdparty.org.eclipse.jetty.util.ssl.SslContextFactory; +import org.apache.hbase.thirdparty.org.eclipse.jetty.util.thread.QueuedThreadPool; +import org.apache.hbase.thirdparty.org.glassfish.jersey.server.ResourceConfig; +import org.apache.hbase.thirdparty.org.glassfish.jersey.servlet.ServletContainer; /** * Main class for launching REST gateway as a servlet hosted by Jetty. diff --git a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServletContainer.java b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServletContainer.java index 2b6a6c7f629..1cae45c0b3f 100644 --- a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServletContainer.java +++ b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RESTServletContainer.java @@ -19,18 +19,17 @@ package org.apache.hadoop.hbase.rest; import java.io.IOException; - import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.security.authorize.AuthorizationException; import org.apache.hadoop.security.authorize.ProxyUsers; import org.apache.yetus.audience.InterfaceAudience; -import org.glassfish.jersey.server.ResourceConfig; -import org.glassfish.jersey.servlet.ServletContainer; + +import org.apache.hbase.thirdparty.org.glassfish.jersey.server.ResourceConfig; +import org.apache.hbase.thirdparty.org.glassfish.jersey.servlet.ServletContainer; /** * REST servlet container. It is used to get the remote request user diff --git a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/model/VersionModel.java b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/model/VersionModel.java index 378d149b5ee..bfee4f20577 100644 --- a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/model/VersionModel.java +++ b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/model/VersionModel.java @@ -21,17 +21,16 @@ package org.apache.hadoop.hbase.rest.model; import java.io.IOException; import java.io.Serializable; - import javax.servlet.ServletContext; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlRootElement; - -import org.apache.yetus.audience.InterfaceAudience; import org.apache.hadoop.hbase.rest.ProtobufMessageHandler; import org.apache.hadoop.hbase.rest.RESTServlet; import org.apache.hadoop.hbase.protobuf.ProtobufUtil; import org.apache.hadoop.hbase.rest.protobuf.generated.VersionMessage.Version; -import org.glassfish.jersey.servlet.ServletContainer; +import org.apache.yetus.audience.InterfaceAudience; + +import org.apache.hbase.thirdparty.org.glassfish.jersey.servlet.ServletContainer; /** diff --git a/hbase-server/pom.xml b/hbase-server/pom.xml index 5fab6c82747..33b8ed3fe9a 100644 --- a/hbase-server/pom.xml +++ b/hbase-server/pom.xml @@ -367,18 +367,6 @@ test-jar test - - org.eclipse.jetty - jetty-server - - - org.eclipse.jetty - jetty-servlet - - - org.eclipse.jetty - jetty-webapp - javax.annotation:javax.annotation-api javax.activation:javax.activation-api + jakarta.ws.rs:jakarta.ws.rs-api + jakarta.annotation:jakarta.annotation-api + jakarta.validation:jakarta.validation-api + org.glassfish.hk2.external:jakarta.inject javax.annotation:javax.annotation-api javax.activation:javax.activation-api + jakarta.ws.rs:jakarta.ws.rs-api + jakarta.annotation:jakarta.annotation-api + jakarta.validation:jakarta.validation-api + org.glassfish.hk2.external:jakarta.inject javax.annotation:javax.annotation-api javax.activation:javax.activation-api + jakarta.ws.rs:jakarta.ws.rs-api + jakarta.annotation:jakarta.annotation-api + jakarta.validation:jakarta.validation-api + org.glassfish.hk2.external:jakarta.inject org.apache.hadoop:* @@ -152,6 +157,7 @@ org.apache.yetus:* log4j:* commons-logging:* + org.javassist:* diff --git a/hbase-thrift/pom.xml b/hbase-thrift/pom.xml index b7ec383a3c8..76bf44ea920 100644 --- a/hbase-thrift/pom.xml +++ b/hbase-thrift/pom.xml @@ -212,31 +212,15 @@ org.apache.thrift libthrift - - org.eclipse.jetty - jetty-server - - - org.eclipse.jetty - jetty-servlet - junit junit test - - org.eclipse.jetty - jetty-http - javax.servlet javax.servlet-api - - org.eclipse.jetty - jetty-util - com.github.stephenc.findbugs findbugs-annotations diff --git a/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServer.java b/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServer.java index 00187e8874d..a7656387cdd 100644 --- a/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServer.java +++ b/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServer.java @@ -89,7 +89,6 @@ import javax.security.auth.callback.Callback; import javax.security.auth.callback.UnsupportedCallbackException; import javax.security.sasl.AuthorizeCallback; import javax.security.sasl.SaslServer; - import org.apache.commons.lang3.ArrayUtils; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configured; @@ -129,17 +128,6 @@ import org.apache.thrift.transport.TServerSocket; import org.apache.thrift.transport.TServerTransport; import org.apache.thrift.transport.TTransportFactory; import org.apache.yetus.audience.InterfaceAudience; -import org.eclipse.jetty.http.HttpVersion; -import org.eclipse.jetty.server.HttpConfiguration; -import org.eclipse.jetty.server.HttpConnectionFactory; -import org.eclipse.jetty.server.SecureRequestCustomizer; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.server.SslConnectionFactory; -import org.eclipse.jetty.servlet.ServletContextHandler; -import org.eclipse.jetty.servlet.ServletHolder; -import org.eclipse.jetty.util.ssl.SslContextFactory; -import org.eclipse.jetty.util.thread.QueuedThreadPool; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -152,6 +140,17 @@ import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLineParser; import org.apache.hbase.thirdparty.org.apache.commons.cli.DefaultParser; import org.apache.hbase.thirdparty.org.apache.commons.cli.HelpFormatter; import org.apache.hbase.thirdparty.org.apache.commons.cli.Options; +import org.apache.hbase.thirdparty.org.eclipse.jetty.http.HttpVersion; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.HttpConfiguration; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.HttpConnectionFactory; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.SecureRequestCustomizer; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.Server; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.ServerConnector; +import org.apache.hbase.thirdparty.org.eclipse.jetty.server.SslConnectionFactory; +import org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.ServletContextHandler; +import org.apache.hbase.thirdparty.org.eclipse.jetty.servlet.ServletHolder; +import org.apache.hbase.thirdparty.org.eclipse.jetty.util.ssl.SslContextFactory; +import org.apache.hbase.thirdparty.org.eclipse.jetty.util.thread.QueuedThreadPool; /** * ThriftServer- this class starts up a Thrift server which implements the diff --git a/pom.xml b/pom.xml index 093a1bc0957..7ef5d030c74 100755 --- a/pom.xml +++ b/pom.xml @@ -970,6 +970,45 @@ + + banned-jetty + + enforce + + + + + + org.eclipse.jetty:** + + + Use shaded jetty instead + + false + + + + + + banned-jersey + + enforce + + + + + + >org.glassfish.jersey.containers:** + >org.glassfish.jersey.core:** + + + Use shaded jersey instead + + false + + + + check-aggregate-license @@ -1084,6 +1123,22 @@ org.htrace.** + + true + 512 + Use shaded jetty in hbase-thirdparty + + org.eclipse.jetty.** + + + + true + 512 + Use shaded jersey in hbase-thirdparty + + org.glassfish.jersey.** + + @@ -1370,12 +1425,9 @@ 3.2.6 2.10.1 2.10.1 - 2.2.12 - 9.3.28.v20191105 + 2.3.1 3.1.0 - 2.0.1 - - 2.25.1 + 2.1.1 2.3.2 3.0.1-b08 9.1.17.0 @@ -1429,7 +1481,7 @@ 3.0.0-M4 2.12 1.0.1 - 3.3.0 + 3.4.0 @@ -1490,8 +1542,8 @@ ${hbase-surefire.argLine} 0.7.5.201505241946 - 1.0-beta-9 - 3.0.0-M2 + 1.3 + 3.0.0-M3 0.14.0 ${project.build.directory}/test-classes @@ -2013,77 +2065,11 @@ javax.annotation-api 1.2 - - org.eclipse.jetty - jetty-server - ${jetty.version} - - - org.eclipse.jetty - jetty-servlet - ${jetty.version} - - - org.eclipse.jetty - servlet-api - - - - - org.eclipse.jetty - jetty-security - ${jetty.version} - - - org.eclipse.jetty - jetty-http - ${jetty.version} - - - org.eclipse.jetty - jetty-util - ${jetty.version} - - - org.eclipse.jetty - jetty-io - ${jetty.version} - - - org.eclipse.jetty - jetty-jmx - ${jetty.version} - - - org.eclipse.jetty - jetty-webapp - ${jetty.version} - - - org.eclipse.jetty - jetty-util-ajax - ${jetty.version} - com.google.protobuf protobuf-java ${external.protobuf.version} - - org.glassfish.jersey.containers - jersey-container-servlet-core - ${jersey.version} - - - org.glassfish.jersey.core - jersey-client - ${jersey.version} - - - org.glassfish.jersey.core - jersey-server - ${jersey.version} - org.glassfish.web @@ -2249,6 +2235,16 @@ hbase-shaded-protobuf ${hbase-thirdparty.version} + + org.apache.hbase.thirdparty + hbase-shaded-jetty + ${hbase-thirdparty.version} + + + org.apache.hbase.thirdparty + hbase-shaded-jersey + ${hbase-thirdparty.version} + com.sun.xml.ws jaxws-ri