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}
+