From 5d24015e6372bec128f2a031ea1a2dc9f84b7b3e Mon Sep 17 00:00:00 2001 From: Istvan Toth Date: Wed, 2 Mar 2022 13:59:09 +0100 Subject: [PATCH] PHOENIX-6660 Ship reload4j in queryserver assembly --- BUILDING.md | 11 ++++++----- bin/phoenix_queryserver_utils.py | 11 +++++++++-- bin/queryserver.py | 8 ++++++-- bin/sqlline-thin.py | 8 +++++--- phoenix-queryserver-assembly/pom.xml | 7 +++++-- .../src/assembly/cluster.xml | 9 ++++++++- pom.xml | 13 ++++++++++++- 7 files changed, 51 insertions(+), 16 deletions(-) diff --git a/BUILDING.md b/BUILDING.md index c6eeb2a..4b84ede 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -29,8 +29,11 @@ By default, this tarball does not contain a Phoenix client jar as it is meant to 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. +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, -and will work with all recent Phoenix versions. +The current release requires at least Phoenix 4.16.0 or 5.1.0. ``` $ mvn clean package @@ -41,12 +44,10 @@ $ mvn clean package To build a release of PQS which packages a specific version of Phoenix, specify the `package-phoenix-client` system property and specify the `phoenix.version` system property to indicate a specific Phoenix version, as well as 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-hbase-2.4 -pl '!phoenix-queryserver-it' -``` -``` -$ mvn clean package -Dpackage.phoenix.client -Dphoenix.version=4.15.0-HBase-1.4 -Dphoenix.client.artifactid=phoenix-client -pl '!phoenix-queryserver-it' +$ mvn clean package -Dpackage.phoenix.client -Dphoenix.version=5.1.1 -Dphoenix.client.artifactid=phoenix-client-embedded-hbase-2.4 -pl '!phoenix-queryserver-it' ``` ### Running integration tests diff --git a/bin/phoenix_queryserver_utils.py b/bin/phoenix_queryserver_utils.py index cbc8f1e..02db08b 100755 --- a/bin/phoenix_queryserver_utils.py +++ b/bin/phoenix_queryserver_utils.py @@ -82,9 +82,11 @@ def setPath(): PHOENIX_QUERYSERVER_JAR_PATTERN = "phoenix-queryserver-[!c]*.jar" PHOENIX_LOADBALANCER_JAR_PATTERN = "load-balancer-*[!t][!e][!s][!t][!s].jar" SQLLINE_WITH_DEPS_PATTERN = "sqlline-*-jar-with-dependencies.jar" - SLF4J_SIMPLE_JAR_PATTERN = "slf4j-simple-*[!s].jar" + SLF4J_BACKEND_JAR_PATTERN = "slf4j-reload4j-*[!s].jar" + LOGGING_JAR_PATTERN = "reload4j-*[!s].jar" OVERRIDE_SLF4J_BACKEND = "PHOENIX_THIN_OVERRIDE_SLF4J_BACKEND" + OVERRIDE_LOGGING = "OVERRIDE_LOGGING_JAR_LOCATION" # Backward support old env variable PHOENIX_LIB_DIR replaced by PHOENIX_CLASS_PATH global phoenix_class_path @@ -159,7 +161,12 @@ def setPath(): global slf4j_backend_jar slf4j_backend_jar = os.environ.get(OVERRIDE_SLF4J_BACKEND) if slf4j_backend_jar is None or slf4j_backend_jar == "": - slf4j_backend_jar = findFileInPathWithoutRecursion(SLF4J_SIMPLE_JAR_PATTERN, os.path.join(current_dir, "..","lib")) + slf4j_backend_jar = findFileInPathWithoutRecursion(SLF4J_BACKEND_JAR_PATTERN, os.path.join(current_dir, "..","lib")) + + global logging_jar + logging_jar = os.environ.get(OVERRIDE_LOGGING) + if logging_jar is None or logging_jar == "": + logging_jar = findFileInPathWithoutRecursion(LOGGING_JAR_PATTERN, os.path.join(current_dir, "..","lib")) return "" diff --git a/bin/queryserver.py b/bin/queryserver.py index be17098..24594c3 100755 --- a/bin/queryserver.py +++ b/bin/queryserver.py @@ -120,9 +120,13 @@ # " -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=defaultrecording=true,dumponexit=true" + \ # The command is run through subprocess so environment variables are automatically inherited -java_cmd = '%(java)s -cp ' + hbase_conf_dir + os.pathsep + hadoop_conf_dir + os.pathsep + \ +java_cmd = '%(java)s -cp ' +\ + hbase_conf_dir + os.pathsep + \ + hadoop_conf_dir + os.pathsep + \ + phoenix_queryserver_utils.slf4j_backend_jar + os.pathsep + \ + phoenix_queryserver_utils.logging_jar + os.pathsep + \ phoenix_queryserver_utils.phoenix_client_jar + os.pathsep + \ - phoenix_queryserver_utils.phoenix_queryserver_jar + os.pathsep + \ + phoenix_queryserver_utils.phoenix_queryserver_jar + \ " -Dproc_phoenixserver" + \ " -Dlog4j.configuration=file:" + os.path.join(phoenix_queryserver_utils.current_dir, "log4j.properties") + \ " -Dpsql.root.logger=%(root_logger)s" + \ diff --git a/bin/sqlline-thin.py b/bin/sqlline-thin.py index e5ef5f4..b110b22 100755 --- a/bin/sqlline-thin.py +++ b/bin/sqlline-thin.py @@ -209,9 +209,11 @@ def get_spnego_auth_disabled(): jdbc_url += ';authentication=SPNEGO' java_cmd = java + ' $PHOENIX_OPTS ' + \ - ' -cp "' + phoenix_queryserver_utils.sqlline_with_deps_jar \ - + os.pathsep + phoenix_queryserver_utils.phoenix_thin_client_jar + \ - os.pathsep + phoenix_queryserver_utils.slf4j_backend_jar + '" -Dlog4j.configuration=file:' + \ + ' -cp "' + phoenix_queryserver_utils.sqlline_with_deps_jar + os.pathsep + \ + phoenix_queryserver_utils.phoenix_thin_client_jar + os.pathsep + \ + phoenix_queryserver_utils.slf4j_backend_jar + os.pathsep + \ + phoenix_queryserver_utils.logging_jar +\ + '" -Dlog4j.configuration=file:' + \ os.path.join(phoenix_queryserver_utils.current_dir, "log4j.properties") + \ ' -Djavax.security.auth.useSubjectCredsOnly=false ' + \ disable_jna + \ diff --git a/phoenix-queryserver-assembly/pom.xml b/phoenix-queryserver-assembly/pom.xml index 5386dd0..c0bec2f 100644 --- a/phoenix-queryserver-assembly/pom.xml +++ b/phoenix-queryserver-assembly/pom.xml @@ -48,8 +48,11 @@ org.slf4j - slf4j-simple - ${slf4j.version} + slf4j-reload4j + + + ch.qos.reload4j + reload4j diff --git a/phoenix-queryserver-assembly/src/assembly/cluster.xml b/phoenix-queryserver-assembly/src/assembly/cluster.xml index f472e83..892ad88 100644 --- a/phoenix-queryserver-assembly/src/assembly/cluster.xml +++ b/phoenix-queryserver-assembly/src/assembly/cluster.xml @@ -72,7 +72,14 @@ false phoenix-queryserver-${project.parent.version}/lib - org.slf4j:slf4j-simple + org.slf4j:slf4j-reload4j + + + + false + phoenix-queryserver-${project.parent.version}/lib + + ch.qos.reload4j:reload4j diff --git a/pom.xml b/pom.xml index 8c02ff0..ef7b947 100644 --- a/pom.xml +++ b/pom.xml @@ -84,7 +84,8 @@ 2.11.0 3.2.2 1.9.0 - 1.7.30 + 1.7.36 + 1.2.19 1.19.0 3.1.0 3.0.0 @@ -564,6 +565,16 @@ slf4j-api ${slf4j.version} + + org.slf4j + slf4j-reload4j + ${slf4j.version} + + + ch.qos.reload4j + reload4j + ${reload4j.version} + net.sourceforge.argparse4j argparse4j