From f58069dfcf5dd7aa2567f89c3e7d5fad80001bff Mon Sep 17 00:00:00 2001 From: Istvan Toth Date: Thu, 26 Jan 2023 13:59:24 +0100 Subject: [PATCH] PHOENIX-6861 PQS fails to start because of relocated javax.servlet with Phoenix 5.2 - make javax.servlet relocation a build time option controlled by a profile - update default phoenix version to 5.1.3 and HBase to 2.4.12 - add log4j2 logging test dependencies so that tests can be run with HBase 2.5 --- .github/workflows/maven.yml | 2 +- BUILDING.md | 20 ++++++++++++++++---- phoenix-queryserver-it/pom.xml | 10 ++++++++++ phoenix-queryserver/pom.xml | 21 +++++++++++++++++++-- pom.xml | 17 ++++++++++++++--- 5 files changed, 60 insertions(+), 10 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 69e1b08..9efe855 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -28,4 +28,4 @@ jobs: with: java-version: 1.8 - name: Build with Maven - run: mvn -B clean install + run: mvn -B clean install -Pshade-javax-servlet diff --git a/BUILDING.md b/BUILDING.md index 4b84ede..a49e374 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -26,14 +26,26 @@ Copyright ©2020 [Apache Software Foundation](http://www.apache.org/). All Right This repository will build a tarball which is capable of running the Phoenix Query Server. By default, this tarball does not contain a Phoenix client jar as it is meant to be agnostic -of Phoenix version (one PQS release can be used against any Phoenix version). Today, PQS builds against -the Phoenix 5.1.1 release with HBase 2.4.2. +of Phoenix version (one PQS release should be usable against any Phoenix version). + +However, due to an incompatible change in the relocations used in the phoenix-client JAR, you need to build +Phoenix Query Server with the `shade-javax-servlet` maven profile if you use Phoenix versions +5.1.1, 5.1.2, 5.1.3 or 4.16.x with it. (See PHOENIX-6861 for more details) +This applies whether you bundle the Phoenix client into the assembly or add it separately. +Phoenix 5.2.0 and later requires that PQS is built WITHOUT the `shade-javax-servlet` maven profile. In order to use Phoenix Query Server, you need to copy the phoenix-client-embedded jar appropriate for your cluster into the Queryserver root directory. Note that the resulting Query Server binaries are not tied to any Phoenix, Hbase or Hadoop versions, -The current release requires at least Phoenix 4.16.0 or 5.1.0. +apart from the exception above. + + +``` +$ mvn clean package -Pshade-javax-servlet +``` + +For other Phoenix versions build with the default settings ``` $ mvn clean package @@ -47,7 +59,7 @@ the `phoenix.client.artifactid` to choose the phoenix-client HBase variant. You need to bundle the embedded client variant, to avoid conflicts with the logging libraries. ``` -$ mvn clean package -Dpackage.phoenix.client -Dphoenix.version=5.1.1 -Dphoenix.client.artifactid=phoenix-client-embedded-hbase-2.4 -pl '!phoenix-queryserver-it' +$ mvn clean package -Dpackage.phoenix.client -Dphoenix.version=5.1.1 -Dphoenix.client.artifactid=phoenix-client-embedded-hbase-2.4 -Pshade-javax-servlet -pl '!phoenix-queryserver-it' ``` ### Running integration tests diff --git a/phoenix-queryserver-it/pom.xml b/phoenix-queryserver-it/pom.xml index 1930ee5..36b9d5c 100644 --- a/phoenix-queryserver-it/pom.xml +++ b/phoenix-queryserver-it/pom.xml @@ -191,6 +191,16 @@ com.google.code.gson gson test + + + org.apache.logging.log4j + log4j-api + test + + + org.apache.logging.log4j + log4j-core + test diff --git a/phoenix-queryserver/pom.xml b/phoenix-queryserver/pom.xml index 2fe5455..ffd2ceb 100644 --- a/phoenix-queryserver/pom.xml +++ b/phoenix-queryserver/pom.xml @@ -38,6 +38,7 @@ ${project.basedir}/.. org.apache.phoenix.shaded + dummy.disable.shading @@ -130,8 +131,8 @@ - javax.servlet - ${shaded.package}.javax.servlet + ${javax.servlet.package} + ${shaded.package}.${javax.servlet.package} + + shade-javax-servlet + + + shade-javax-servlet + + + + javax.servlet + + + diff --git a/pom.xml b/pom.xml index 740cbe3..72843ec 100644 --- a/pom.xml +++ b/pom.xml @@ -68,12 +68,12 @@ ${project.basedir} - 5.1.1 + 5.1.3 - 2.4.2 + 2.4.15 3.1.4 - phoenix-client-hbase-2.4 + phoenix-client-embedded-hbase-2.4 3.5.8 @@ -89,6 +89,7 @@ 1.23.0 3.1.0 3.0.0 + 2.19.0 1.8.5 @@ -692,6 +693,16 @@ 140 test + + org.apache.logging.log4j + log4j-api + ${log4j2.version} + + + org.apache.logging.log4j + log4j-core + ${log4j2.version} +