mirror of
https://github.com/apache/impala.git
synced 2025-12-19 18:12:08 -05:00
IMPALA-11961/IMPALA-12207: Add Redhat 9 / Ubuntu 22 support
This adds support for Redhat 9 / Ubuntu 22. It updates to a newer toolchain that has those builds, and it adds supporting code in bootstrap_system.sh. Redhat 9 and Ubuntu 22 use python = python3, which requires various changes to build scripts and tests. Ubuntu 22 uses Python 3.10, which deprecates certain ssl.PROTOCOL_TLS, so this adapts test_client_ssl.py to that change until it can be fully addressed in IMPALA-12219. Various OpenSSL methods have been deprecated. As a workaround until these can be addressed properly, this specifies -Wno-deprecated-declarations. This can be removed once the code is adapted to the non-deprecated APIs in IMPALA-12226. Impala crashes with tcmalloc errors unless we update to a newer gperftools, so this moves to gperftools 2.10. gperftools changed the default for tcmalloc.aggressive_memory_decommit to off, so this adapts our code to set it for backend tests. The gperftools upgrade does not show any performance regression: +----------+-----------------------+---------+------------+------------+----------------+ | Workload | File Format | Avg (s) | Delta(Avg) | GeoMean(s) | Delta(GeoMean) | +----------+-----------------------+---------+------------+------------+----------------+ | TPCH(42) | parquet / none / none | 3.08 | -0.64% | 2.20 | -0.37% | +----------+-----------------------+---------+------------+------------+----------------+ With newer Python versions, the impala-virtualenv command fails to create a Python 3 virtualenv. This switches to using Python 3's builtin venv command for Python >=3.6. Kudu needed a newer version and LLVM required a couple patches. Testing: - Ran a core job on Ubuntu 22 and Redhat 9. The tests run to completion without crashing. There are test failures that will be addressed in follow-up JIRAs. - Ran dockerised tests on Ubuntu 22. - Ran dockerised tests on Ubuntu 20 and Rocky 8.5. Change-Id: If1fcdb2f8c635ecd6dc7a8a1db81f5f389c78b86 Reviewed-on: http://gerrit.cloudera.org:8080/20073 Reviewed-by: Michael Smith <michael.smith@cloudera.com> Tested-by: Joe McDonnell <joemcdonnell@cloudera.com>
This commit is contained in:
@@ -35,6 +35,9 @@ PROJECT(ASSEMBLER)
|
|||||||
# -fsigned-char: on aarch64 platform, type of char default is unsigned char, here
|
# -fsigned-char: on aarch64 platform, type of char default is unsigned char, here
|
||||||
# set it to signed-char to be compatible with x86-64
|
# set it to signed-char to be compatible with x86-64
|
||||||
# -Wno-deprecated: gutil contains deprecated headers
|
# -Wno-deprecated: gutil contains deprecated headers
|
||||||
|
# -Wno-deprecated-declarations: OpenSSL3 deprecated various APIs currently used by
|
||||||
|
# Impala, so this disables those warnings until they can be addressed.
|
||||||
|
# See IMPALA-12226.
|
||||||
# -Wno-vla: we use C99-style variable-length arrays
|
# -Wno-vla: we use C99-style variable-length arrays
|
||||||
# -pthread: enable multithreaded malloc
|
# -pthread: enable multithreaded malloc
|
||||||
# -DBOOST_DATE_TIME_POSIX_TIME_STD_CONFIG: enable nanosecond precision for boost
|
# -DBOOST_DATE_TIME_POSIX_TIME_STD_CONFIG: enable nanosecond precision for boost
|
||||||
@@ -46,7 +49,7 @@ SET(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wall -Wno-sign-compare -Wno-unknown-p
|
|||||||
SET(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -fno-strict-aliasing -fno-omit-frame-pointer")
|
SET(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -fno-strict-aliasing -fno-omit-frame-pointer")
|
||||||
SET(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -fsigned-char")
|
SET(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -fsigned-char")
|
||||||
SET(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -std=c++17")
|
SET(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -std=c++17")
|
||||||
SET(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-deprecated -Wno-vla")
|
SET(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -Wno-deprecated -Wno-deprecated-declarations -Wno-vla")
|
||||||
SET(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -DBOOST_DATE_TIME_POSIX_TIME_STD_CONFIG")
|
SET(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -DBOOST_DATE_TIME_POSIX_TIME_STD_CONFIG")
|
||||||
SET(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -DBOOST_SYSTEM_NO_DEPRECATED")
|
SET(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -DBOOST_SYSTEM_NO_DEPRECATED")
|
||||||
SET(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -DBOOST_BIND_GLOBAL_PLACEHOLDERS")
|
SET(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -DBOOST_BIND_GLOBAL_PLACEHOLDERS")
|
||||||
|
|||||||
@@ -568,8 +568,7 @@ void ExecEnv::SetImpalaServer(ImpalaServer* server) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExecEnv::InitBufferPool(int64_t min_buffer_size, int64_t capacity,
|
void ExecEnv::InitTcMallocAggressiveDecommit() {
|
||||||
int64_t clean_pages_limit) {
|
|
||||||
#if !defined(ADDRESS_SANITIZER) && !defined(THREAD_SANITIZER)
|
#if !defined(ADDRESS_SANITIZER) && !defined(THREAD_SANITIZER)
|
||||||
// Aggressive decommit is required so that unused pages in the TCMalloc page heap are
|
// Aggressive decommit is required so that unused pages in the TCMalloc page heap are
|
||||||
// not backed by physical pages and do not contribute towards memory consumption.
|
// not backed by physical pages and do not contribute towards memory consumption.
|
||||||
@@ -577,6 +576,11 @@ void ExecEnv::InitBufferPool(int64_t min_buffer_size, int64_t capacity,
|
|||||||
MallocExtension::instance()->SetNumericProperty(
|
MallocExtension::instance()->SetNumericProperty(
|
||||||
"tcmalloc.aggressive_memory_decommit", 1);
|
"tcmalloc.aggressive_memory_decommit", 1);
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExecEnv::InitBufferPool(int64_t min_buffer_size, int64_t capacity,
|
||||||
|
int64_t clean_pages_limit) {
|
||||||
|
InitTcMallocAggressiveDecommit();
|
||||||
buffer_pool_.reset(
|
buffer_pool_.reset(
|
||||||
new BufferPool(metrics_.get(), min_buffer_size, capacity, clean_pages_limit));
|
new BufferPool(metrics_.get(), min_buffer_size, capacity, clean_pages_limit));
|
||||||
buffer_reservation_.reset(new ReservationTracker());
|
buffer_reservation_.reset(new ReservationTracker());
|
||||||
|
|||||||
@@ -327,6 +327,13 @@ class ExecEnv {
|
|||||||
/// Initialize ExecEnv based on Hadoop config from frontend.
|
/// Initialize ExecEnv based on Hadoop config from frontend.
|
||||||
Status InitHadoopConfig();
|
Status InitHadoopConfig();
|
||||||
|
|
||||||
|
/// Set tcmalloc's aggressive_memory_decommit=1. This needs to be called before
|
||||||
|
/// initializing the buffer pool, because the buffer pool asserts that this
|
||||||
|
/// property is set and newer versions of tcmalloc do not set it by default.
|
||||||
|
/// InitBufferPool() calls this automatically, so this is only used directly by
|
||||||
|
/// TestEnv.
|
||||||
|
void InitTcMallocAggressiveDecommit();
|
||||||
|
|
||||||
/// Initialise 'buffer_pool_' and 'buffer_reservation_' with given capacity.
|
/// Initialise 'buffer_pool_' and 'buffer_reservation_' with given capacity.
|
||||||
void InitBufferPool(int64_t min_page_len, int64_t capacity, int64_t clean_pages_limit);
|
void InitBufferPool(int64_t min_page_len, int64_t capacity, int64_t clean_pages_limit);
|
||||||
|
|
||||||
|
|||||||
@@ -73,6 +73,11 @@ Status TestEnv::Init() {
|
|||||||
if (enable_buffer_pool_) {
|
if (enable_buffer_pool_) {
|
||||||
exec_env_->InitBufferPool(buffer_pool_min_buffer_len_, buffer_pool_capacity_,
|
exec_env_->InitBufferPool(buffer_pool_min_buffer_len_, buffer_pool_capacity_,
|
||||||
static_cast<int64_t>(0.1 * buffer_pool_capacity_));
|
static_cast<int64_t>(0.1 * buffer_pool_capacity_));
|
||||||
|
} else {
|
||||||
|
// The buffer pool requires tcmalloc's aggressive_memory_decommit to be set.
|
||||||
|
// Since this codepath will never call InitBufferPool(), this needs to manually
|
||||||
|
// set it.
|
||||||
|
exec_env_->InitTcMallocAggressiveDecommit();
|
||||||
}
|
}
|
||||||
if (process_mem_tracker_use_metrics_) {
|
if (process_mem_tracker_use_metrics_) {
|
||||||
exec_env_->InitMemTracker(process_mem_limit_);
|
exec_env_->InitMemTracker(process_mem_limit_);
|
||||||
|
|||||||
@@ -34,8 +34,8 @@ set -euxo pipefail
|
|||||||
export DEBIAN_FRONTEND=noninteractive
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
sudo -E apt-get update
|
sudo -E apt-get update
|
||||||
sudo -E apt-get --yes install g++ gcc git libsasl2-dev libssl-dev make python-dev \
|
sudo -E apt-get --yes install g++ gcc git libsasl2-dev libssl-dev make python-dev \
|
||||||
python-setuptools python3-dev python3-setuptools libffi-dev libkrb5-dev \
|
python-setuptools python3-dev python3-setuptools python3-venv libffi-dev \
|
||||||
krb5-admin-server krb5-kdc krb5-user libxml2-dev libxslt-dev
|
libkrb5-dev krb5-admin-server krb5-kdc krb5-user libxml2-dev libxslt-dev
|
||||||
|
|
||||||
source /etc/lsb-release
|
source /etc/lsb-release
|
||||||
|
|
||||||
|
|||||||
@@ -70,17 +70,22 @@ set -x
|
|||||||
|
|
||||||
# Determine whether we're running on redhat or ubuntu
|
# Determine whether we're running on redhat or ubuntu
|
||||||
REDHAT=
|
REDHAT=
|
||||||
REDHAT6=
|
|
||||||
REDHAT7=
|
REDHAT7=
|
||||||
REDHAT8=
|
REDHAT8=
|
||||||
|
REDHAT9=
|
||||||
UBUNTU=
|
UBUNTU=
|
||||||
UBUNTU16=
|
UBUNTU16=
|
||||||
UBUNTU18=
|
UBUNTU18=
|
||||||
UBUNTU20=
|
UBUNTU20=
|
||||||
|
UBUNTU22=
|
||||||
IN_DOCKER=
|
IN_DOCKER=
|
||||||
if [[ -f /etc/redhat-release ]]; then
|
if [[ -f /etc/redhat-release ]]; then
|
||||||
REDHAT=true
|
REDHAT=true
|
||||||
echo "Identified redhat system."
|
echo "Identified redhat system."
|
||||||
|
if grep 'release 9\.' /etc/redhat-release; then
|
||||||
|
REDHAT9=true
|
||||||
|
echo "Identified redhat9 system."
|
||||||
|
fi
|
||||||
if grep 'release 8\.' /etc/redhat-release; then
|
if grep 'release 8\.' /etc/redhat-release; then
|
||||||
REDHAT8=true
|
REDHAT8=true
|
||||||
echo "Identified redhat8 system."
|
echo "Identified redhat8 system."
|
||||||
@@ -89,10 +94,6 @@ if [[ -f /etc/redhat-release ]]; then
|
|||||||
REDHAT7=true
|
REDHAT7=true
|
||||||
echo "Identified redhat7 system."
|
echo "Identified redhat7 system."
|
||||||
fi
|
fi
|
||||||
if grep 'release 6\.' /etc/redhat-release; then
|
|
||||||
REDHAT6=true
|
|
||||||
echo "Identified redhat6 system."
|
|
||||||
fi
|
|
||||||
# TODO: restrict redhat versions
|
# TODO: restrict redhat versions
|
||||||
else
|
else
|
||||||
source /etc/lsb-release
|
source /etc/lsb-release
|
||||||
@@ -114,8 +115,12 @@ else
|
|||||||
then
|
then
|
||||||
UBUNTU20=true
|
UBUNTU20=true
|
||||||
echo "Identified Ubuntu 20.04 system."
|
echo "Identified Ubuntu 20.04 system."
|
||||||
|
elif [[ $DISTRIB_RELEASE = 22.04 ]]
|
||||||
|
then
|
||||||
|
UBUNTU22=true
|
||||||
|
echo "Identified Ubuntu 22.04 system."
|
||||||
else
|
else
|
||||||
echo "This script supports Ubuntu versions 16.04, 18.04 or 20.04" >&2
|
echo "This script supports Ubuntu versions 16.04, 18.04, 20.04, or 22.04" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
@@ -155,6 +160,12 @@ function ubuntu20 {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function ubuntu22 {
|
||||||
|
if [[ "$UBUNTU22" == true ]]; then
|
||||||
|
"$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Helper function to execute following command only on RedHat
|
# Helper function to execute following command only on RedHat
|
||||||
function redhat {
|
function redhat {
|
||||||
if [[ "$REDHAT" == true ]]; then
|
if [[ "$REDHAT" == true ]]; then
|
||||||
@@ -162,12 +173,6 @@ function redhat {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Helper function to execute following command only on RedHat6
|
|
||||||
function redhat6 {
|
|
||||||
if [[ "$REDHAT6" == true ]]; then
|
|
||||||
"$@"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
# Helper function to execute following command only on RedHat7
|
# Helper function to execute following command only on RedHat7
|
||||||
function redhat7 {
|
function redhat7 {
|
||||||
if [[ "$REDHAT7" == true ]]; then
|
if [[ "$REDHAT7" == true ]]; then
|
||||||
@@ -180,6 +185,12 @@ function redhat8 {
|
|||||||
"$@"
|
"$@"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
# Helper function to execute following command only on RedHat8
|
||||||
|
function redhat9 {
|
||||||
|
if [[ "$REDHAT9" == true ]]; then
|
||||||
|
"$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
# Helper function to execute following command only in docker
|
# Helper function to execute following command only in docker
|
||||||
function indocker {
|
function indocker {
|
||||||
if [[ "$IN_DOCKER" == true ]]; then
|
if [[ "$IN_DOCKER" == true ]]; then
|
||||||
@@ -219,16 +230,22 @@ fi
|
|||||||
source "$IMPALA_HOME/bin/impala-config-java.sh"
|
source "$IMPALA_HOME/bin/impala-config-java.sh"
|
||||||
|
|
||||||
ubuntu apt-get update
|
ubuntu apt-get update
|
||||||
ubuntu apt-get --yes install ccache curl gawk g++ gcc apt-utils git libffi-dev \
|
ubuntu apt-get --yes install ccache curl file gawk g++ gcc apt-utils git libffi-dev \
|
||||||
libkrb5-dev krb5-admin-server krb5-kdc krb5-user libsasl2-dev \
|
libkrb5-dev krb5-admin-server krb5-kdc krb5-user libsasl2-dev \
|
||||||
libsasl2-modules libsasl2-modules-gssapi-mit libssl-dev make ninja-build \
|
libsasl2-modules libsasl2-modules-gssapi-mit libssl-dev make ninja-build \
|
||||||
python-dev python-setuptools python3-dev python3-setuptools postgresql \
|
python3-dev python3-setuptools python3-venv postgresql \
|
||||||
ssh wget vim-common psmisc lsof net-tools language-pack-en libxml2-dev \
|
ssh wget vim-common psmisc lsof net-tools language-pack-en libxml2-dev \
|
||||||
libxslt-dev openjdk-${UBUNTU_JAVA_VERSION}-jdk \
|
libxslt-dev openjdk-${UBUNTU_JAVA_VERSION}-jdk \
|
||||||
openjdk-${UBUNTU_JAVA_VERSION}-source openjdk-${UBUNTU_JAVA_VERSION}-dbg
|
openjdk-${UBUNTU_JAVA_VERSION}-source openjdk-${UBUNTU_JAVA_VERSION}-dbg
|
||||||
|
|
||||||
|
# Regular python packages don't exist on Ubuntu 22. Everything is Python 3.
|
||||||
|
ubuntu16 apt-get --yes install python python-dev python-setuptools
|
||||||
|
ubuntu18 apt-get --yes install python python-dev python-setuptools
|
||||||
|
ubuntu20 apt-get --yes install python python-dev python-setuptools
|
||||||
|
|
||||||
# Required by Kudu in the minicluster
|
# Required by Kudu in the minicluster
|
||||||
ubuntu20 apt-get --yes install libtinfo5
|
ubuntu20 apt-get --yes install libtinfo5
|
||||||
|
ubuntu22 apt-get --yes install libtinfo5
|
||||||
ARCH_NAME=$(uname -p)
|
ARCH_NAME=$(uname -p)
|
||||||
if [[ $ARCH_NAME == 'aarch64' ]]; then
|
if [[ $ARCH_NAME == 'aarch64' ]]; then
|
||||||
ubuntu apt-get --yes install unzip pkg-config flex maven python3-pip build-essential \
|
ubuntu apt-get --yes install unzip pkg-config flex maven python3-pip build-essential \
|
||||||
@@ -240,18 +257,24 @@ fi
|
|||||||
ubuntu sudo update-java-alternatives -s \
|
ubuntu sudo update-java-alternatives -s \
|
||||||
java-1.${UBUNTU_JAVA_VERSION}.0-openjdk-${UBUNTU_PACKAGE_ARCH}
|
java-1.${UBUNTU_JAVA_VERSION}.0-openjdk-${UBUNTU_PACKAGE_ARCH}
|
||||||
|
|
||||||
redhat sudo yum install -y curl gawk gcc gcc-c++ git krb5-devel krb5-server \
|
redhat sudo yum install -y file gawk gcc gcc-c++ git krb5-devel krb5-server \
|
||||||
krb5-workstation libevent-devel libffi-devel make openssl-devel cyrus-sasl \
|
krb5-workstation libevent-devel libffi-devel make openssl-devel cyrus-sasl \
|
||||||
cyrus-sasl-gssapi cyrus-sasl-devel cyrus-sasl-plain \
|
cyrus-sasl-gssapi cyrus-sasl-devel cyrus-sasl-plain \
|
||||||
postgresql postgresql-server \
|
postgresql postgresql-server \
|
||||||
wget vim-common nscd cmake fuse-devel zlib-devel \
|
wget vim-common nscd cmake zlib-devel \
|
||||||
psmisc lsof openssh-server python3-devel python3-setuptools \
|
procps psmisc lsof openssh-server python3-devel python3-setuptools \
|
||||||
net-tools langpacks-en glibc-langpack-en libxml2-devel libxslt-devel \
|
net-tools langpacks-en glibc-langpack-en libxml2-devel libxslt-devel \
|
||||||
java-${REDHAT_JAVA_VERSION}-openjdk-src java-${REDHAT_JAVA_VERSION}-openjdk-devel
|
java-${REDHAT_JAVA_VERSION}-openjdk-src java-${REDHAT_JAVA_VERSION}-openjdk-devel
|
||||||
|
|
||||||
|
# fuse-devel doesn't exist for Redhat 9
|
||||||
|
redhat7 sudo yum install -y fuse-devel curl
|
||||||
|
redhat8 sudo yum install -y fuse-devel curl
|
||||||
|
# Redhat9 can have curl-minimal preinstalled, which can conflict with curl.
|
||||||
|
# Adding --allowerasing allows curl to replace curl-minimal.
|
||||||
|
redhat9 sudo yum install -y --allowerasing curl
|
||||||
|
|
||||||
# RedHat / CentOS 8 exposes only specific versions of Python.
|
# RedHat / CentOS 8 exposes only specific versions of Python.
|
||||||
# Set up unversioned default Python 2.x for older CentOS versions
|
# Set up unversioned default Python 2.x for older CentOS versions
|
||||||
redhat6 sudo yum install -y python-devel python-setuptools python-argparse
|
|
||||||
redhat7 sudo yum install -y python-devel python-setuptools python-argparse
|
redhat7 sudo yum install -y python-devel python-setuptools python-argparse
|
||||||
|
|
||||||
# Install Python 2.x explicitly for CentOS 8
|
# Install Python 2.x explicitly for CentOS 8
|
||||||
@@ -278,6 +301,38 @@ function setup_python2() {
|
|||||||
redhat8 setup_python2
|
redhat8 setup_python2
|
||||||
redhat8 pip install --user argparse
|
redhat8 pip install --user argparse
|
||||||
|
|
||||||
|
# Point Python to Python 3 for Redhat 9 and Ubuntu 22
|
||||||
|
function setup_python3() {
|
||||||
|
# If python is already set, then use it. Otherwise, try to point python to python3.
|
||||||
|
if ! command -v python > /dev/null; then
|
||||||
|
if command -v python3 ; then
|
||||||
|
# Newer OSes (e.g. Redhat 9 and equivalents) make it harder to get Python 2, and we
|
||||||
|
# need to start using Python 3 by default.
|
||||||
|
# For these new OSes (Ubuntu 22, Redhat 9), there is no alternative entry for
|
||||||
|
# python, so we need to create one from scratch.
|
||||||
|
if command -v alternatives > /dev/null; then
|
||||||
|
if sudo alternatives --list | grep python > /dev/null ; then
|
||||||
|
sudo alternatives --set python /usr/bin/python3
|
||||||
|
else
|
||||||
|
# The alternative doesn't exist, create it
|
||||||
|
sudo alternatives --install /usr/bin/python python /usr/bin/python3 20
|
||||||
|
fi
|
||||||
|
elif command -v update-alternatives > /dev/null; then
|
||||||
|
# This is what Ubuntu 20/22+ does. There is no official python alternative,
|
||||||
|
# so we need to create one.
|
||||||
|
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 20
|
||||||
|
else
|
||||||
|
echo "ERROR: trying to set python to point to python3"
|
||||||
|
echo "ERROR: alternatives/update-alternatives don't exist, so giving up..."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
redhat9 setup_python3
|
||||||
|
ubuntu22 setup_python3
|
||||||
|
|
||||||
# CentOS repos don't contain ccache, so install from EPEL
|
# CentOS repos don't contain ccache, so install from EPEL
|
||||||
redhat sudo yum install -y epel-release
|
redhat sudo yum install -y epel-release
|
||||||
redhat sudo yum install -y ccache
|
redhat sudo yum install -y ccache
|
||||||
@@ -299,19 +354,16 @@ if [ ! -d /usr/local/apache-maven-3.5.4 ]; then
|
|||||||
MAVEN_DIRECTORY="/usr/local/apache-maven-3.5.4"
|
MAVEN_DIRECTORY="/usr/local/apache-maven-3.5.4"
|
||||||
redhat8 indocker sudo chmod 0755 ${MAVEN_DIRECTORY}
|
redhat8 indocker sudo chmod 0755 ${MAVEN_DIRECTORY}
|
||||||
redhat8 indocker sudo chmod 0755 ${MAVEN_DIRECTORY}/{bin,boot}
|
redhat8 indocker sudo chmod 0755 ${MAVEN_DIRECTORY}/{bin,boot}
|
||||||
|
redhat9 indocker sudo chmod 0755 ${MAVEN_DIRECTORY}
|
||||||
|
redhat9 indocker sudo chmod 0755 ${MAVEN_DIRECTORY}/{bin,boot}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! { service --status-all | grep -E '^ \[ \+ \] ssh$'; }
|
if ! { service --status-all | grep -E '^ \[ \+ \] ssh$'; }
|
||||||
then
|
then
|
||||||
ubuntu sudo service ssh start
|
ubuntu sudo service ssh start
|
||||||
# TODO: CentOS/RH 7 uses systemd, and this doesn't work.
|
redhat notindocker sudo service sshd start
|
||||||
redhat6 sudo service sshd start
|
redhat indocker sudo /usr/bin/ssh-keygen -A
|
||||||
redhat7 notindocker sudo service sshd start
|
redhat indocker sudo /usr/sbin/sshd
|
||||||
redhat8 notindocker sudo service sshd start
|
|
||||||
redhat7 indocker sudo /usr/bin/ssh-keygen -A
|
|
||||||
redhat7 indocker sudo /usr/sbin/sshd
|
|
||||||
redhat8 indocker sudo /usr/bin/ssh-keygen -A
|
|
||||||
redhat8 indocker sudo /usr/sbin/sshd
|
|
||||||
# The CentOS 8.1 image includes /var/run/nologin by mistake; this file prevents
|
# The CentOS 8.1 image includes /var/run/nologin by mistake; this file prevents
|
||||||
# SSH logins. See https://github.com/CentOS/sig-cloud-instance-images/issues/60
|
# SSH logins. See https://github.com/CentOS/sig-cloud-instance-images/issues/60
|
||||||
redhat8 indocker sudo rm -f /var/run/nologin
|
redhat8 indocker sudo rm -f /var/run/nologin
|
||||||
@@ -323,14 +375,9 @@ fi
|
|||||||
|
|
||||||
echo ">>> Configuring system"
|
echo ">>> Configuring system"
|
||||||
|
|
||||||
redhat6 sudo service postgresql initdb
|
redhat notindocker sudo service postgresql initdb
|
||||||
redhat6 sudo service postgresql stop
|
redhat notindocker sudo service postgresql stop
|
||||||
redhat7 notindocker sudo service postgresql initdb
|
redhat indocker sudo -u postgres PGDATA=/var/lib/pgsql/data pg_ctl init
|
||||||
redhat7 notindocker sudo service postgresql stop
|
|
||||||
redhat7 indocker sudo -u postgres PGDATA=/var/lib/pgsql/data pg_ctl init
|
|
||||||
redhat8 notindocker sudo service postgresql initdb
|
|
||||||
redhat8 notindocker sudo service postgresql stop
|
|
||||||
redhat8 indocker sudo -u postgres PGDATA=/var/lib/pgsql/data pg_ctl init
|
|
||||||
ubuntu sudo service postgresql stop
|
ubuntu sudo service postgresql stop
|
||||||
|
|
||||||
# These configurations expose connectiong to PostgreSQL via md5-hashed
|
# These configurations expose connectiong to PostgreSQL via md5-hashed
|
||||||
@@ -344,14 +391,10 @@ redhat sudo sed -ri 's/local +all +all +(ident|peer)/local all all trust/g' \
|
|||||||
redhat sudo sed -i -e 's,\(host.*\)ident,\1md5,' /var/lib/pgsql/data/pg_hba.conf
|
redhat sudo sed -i -e 's,\(host.*\)ident,\1md5,' /var/lib/pgsql/data/pg_hba.conf
|
||||||
|
|
||||||
ubuntu sudo service postgresql start
|
ubuntu sudo service postgresql start
|
||||||
redhat6 sudo service postgresql start
|
redhat notindocker sudo service postgresql start
|
||||||
redhat7 notindocker sudo service postgresql start
|
|
||||||
redhat8 notindocker sudo service postgresql start
|
|
||||||
# Important to redirect pg_ctl to a logfile, lest it keep the stdout
|
# Important to redirect pg_ctl to a logfile, lest it keep the stdout
|
||||||
# file descriptor open, preventing the shell from exiting.
|
# file descriptor open, preventing the shell from exiting.
|
||||||
redhat7 indocker sudo -u postgres PGDATA=/var/lib/pgsql/data bash -c \
|
redhat indocker sudo -u postgres PGDATA=/var/lib/pgsql/data bash -c \
|
||||||
"pg_ctl start -w --timeout=120 >> /var/lib/pgsql/pg.log 2>&1"
|
|
||||||
redhat8 indocker sudo -u postgres PGDATA=/var/lib/pgsql/data bash -c \
|
|
||||||
"pg_ctl start -w --timeout=120 >> /var/lib/pgsql/pg.log 2>&1"
|
"pg_ctl start -w --timeout=120 >> /var/lib/pgsql/pg.log 2>&1"
|
||||||
|
|
||||||
# Set up postgres for HMS
|
# Set up postgres for HMS
|
||||||
@@ -419,11 +462,10 @@ echo -e "\n* - nofile 1048576" | sudo tee -a /etc/security/limits.conf
|
|||||||
|
|
||||||
# Default on CentOS limits a user to 1024 or 4096 processes (threads) , which isn't
|
# Default on CentOS limits a user to 1024 or 4096 processes (threads) , which isn't
|
||||||
# enough for minicluster with all of its friends.
|
# enough for minicluster with all of its friends.
|
||||||
redhat6 sudo sed -i 's,\*\s*soft\s*nproc\s*[0-9]*$,* soft nproc unlimited,' \
|
|
||||||
/etc/security/limits.d/*-nproc.conf
|
|
||||||
redhat7 sudo sed -i 's,\*\s*soft\s*nproc\s*[0-9]*$,* soft nproc unlimited,' \
|
redhat7 sudo sed -i 's,\*\s*soft\s*nproc\s*[0-9]*$,* soft nproc unlimited,' \
|
||||||
/etc/security/limits.d/*-nproc.conf
|
/etc/security/limits.d/*-nproc.conf
|
||||||
redhat8 echo -e "* soft nproc unlimited" | sudo tee -a /etc/security/limits.conf
|
redhat8 echo -e "* soft nproc unlimited" | sudo tee -a /etc/security/limits.conf
|
||||||
|
redhat9 echo -e "* soft nproc unlimited" | sudo tee -a /etc/security/limits.conf
|
||||||
|
|
||||||
echo ">>> Checking out Impala"
|
echo ">>> Checking out Impala"
|
||||||
|
|
||||||
|
|||||||
@@ -80,11 +80,15 @@ OS_MAPPING = [
|
|||||||
OsMapping("centos8", "ec2-package-centos-8"),
|
OsMapping("centos8", "ec2-package-centos-8"),
|
||||||
OsMapping("rocky8", "ec2-package-centos-8"),
|
OsMapping("rocky8", "ec2-package-centos-8"),
|
||||||
OsMapping("almalinux8", "ec2-package-centos-8"),
|
OsMapping("almalinux8", "ec2-package-centos-8"),
|
||||||
|
OsMapping("rhel9", "ec2-package-rocky-9"),
|
||||||
|
OsMapping("rocky9", "ec2-package-rocky-9"),
|
||||||
|
OsMapping("almalinux9", "ec2-package-rocky-9"),
|
||||||
OsMapping("sles12", "ec2-package-sles-12"),
|
OsMapping("sles12", "ec2-package-sles-12"),
|
||||||
OsMapping("sles15", "ec2-package-sles-15"),
|
OsMapping("sles15", "ec2-package-sles-15"),
|
||||||
OsMapping('ubuntu16', "ec2-package-ubuntu-16-04"),
|
OsMapping('ubuntu16', "ec2-package-ubuntu-16-04"),
|
||||||
OsMapping('ubuntu18', "ec2-package-ubuntu-18-04"),
|
OsMapping('ubuntu18', "ec2-package-ubuntu-18-04"),
|
||||||
OsMapping('ubuntu20', "ec2-package-ubuntu-20-04")
|
OsMapping('ubuntu20', "ec2-package-ubuntu-20-04"),
|
||||||
|
OsMapping('ubuntu22', "ec2-package-ubuntu-22-04")
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
53
bin/cmake_aux/create_py3_virtualenv.sh
Executable file
53
bin/cmake_aux/create_py3_virtualenv.sh
Executable file
@@ -0,0 +1,53 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# Create a python3 virtualenv. When system python is 3.6 or higher,
|
||||||
|
# we can just use the built-in venv module to create the virtualenv.
|
||||||
|
# If system python is older or the built-in venv module fails, then
|
||||||
|
# this falls back to impala-virtualenv, which uses python2 to
|
||||||
|
# initialize a virtualenv using python3.
|
||||||
|
#
|
||||||
|
# This takes a single argument, which is the destination directory
|
||||||
|
# for the virtualenv:
|
||||||
|
# create_py3_virtualenv.sh venv_dir
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# We should only be calling this when system python3 is available
|
||||||
|
[[ -n ${IMPALA_SYSTEM_PYTHON3} ]]
|
||||||
|
|
||||||
|
VENV_DIR=$1
|
||||||
|
|
||||||
|
IS_PY36_OR_HIGHER=$(${IMPALA_SYSTEM_PYTHON3} -c \
|
||||||
|
"import sys; print('true' if sys.version_info.minor >= 6 else 'false')")
|
||||||
|
|
||||||
|
# If using Python >= 3.6, try to use the builtin venv package.
|
||||||
|
if $IS_PY36_OR_HIGHER ; then
|
||||||
|
if ${IMPALA_SYSTEM_PYTHON3} -m venv ${VENV_DIR} ; then
|
||||||
|
# Success
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if $IS_PY36_OR_HIGHER ; then
|
||||||
|
echo "WARNING: Tried to create virtualenv with Python3's venv module and failed."
|
||||||
|
echo "Falling back to old impala-virtualenv path..."
|
||||||
|
fi
|
||||||
|
# Fall back to using the old impala-virtualenv method
|
||||||
|
impala-virtualenv --python ${IMPALA_SYSTEM_PYTHON3} ${VENV_DIR}
|
||||||
|
|
||||||
@@ -81,7 +81,7 @@ export USE_APACHE_HIVE=${USE_APACHE_HIVE-false}
|
|||||||
# moving to a different build of the toolchain, e.g. when a version is bumped or a
|
# moving to a different build of the toolchain, e.g. when a version is bumped or a
|
||||||
# compile option is changed. The build id can be found in the output of the toolchain
|
# compile option is changed. The build id can be found in the output of the toolchain
|
||||||
# build jobs, it is constructed from the build number and toolchain git hash prefix.
|
# build jobs, it is constructed from the build number and toolchain git hash prefix.
|
||||||
export IMPALA_TOOLCHAIN_BUILD_ID=296-f7e1d0d78b
|
export IMPALA_TOOLCHAIN_BUILD_ID=320-33e177225e
|
||||||
# Versions of toolchain dependencies.
|
# Versions of toolchain dependencies.
|
||||||
# -----------------------------------
|
# -----------------------------------
|
||||||
export IMPALA_AVRO_VERSION=1.7.4-p5
|
export IMPALA_AVRO_VERSION=1.7.4-p5
|
||||||
@@ -114,7 +114,7 @@ export IMPALA_GFLAGS_VERSION=2.2.0-p2
|
|||||||
unset IMPALA_GFLAGS_URL
|
unset IMPALA_GFLAGS_URL
|
||||||
export IMPALA_GLOG_VERSION=0.3.5-p3
|
export IMPALA_GLOG_VERSION=0.3.5-p3
|
||||||
unset IMPALA_GLOG_URL
|
unset IMPALA_GLOG_URL
|
||||||
export IMPALA_GPERFTOOLS_VERSION=2.5-p4
|
export IMPALA_GPERFTOOLS_VERSION=2.10
|
||||||
unset IMPALA_GPERFTOOLS_URL
|
unset IMPALA_GPERFTOOLS_URL
|
||||||
export IMPALA_GTEST_VERSION=1.6.0
|
export IMPALA_GTEST_VERSION=1.6.0
|
||||||
unset IMPALA_GTEST_URL
|
unset IMPALA_GTEST_URL
|
||||||
@@ -124,9 +124,9 @@ export IMPALA_LIBEV_VERSION=4.20-p1
|
|||||||
unset IMPALA_LIBEV_URL
|
unset IMPALA_LIBEV_URL
|
||||||
export IMPALA_LIBUNWIND_VERSION=1.5.0-p1
|
export IMPALA_LIBUNWIND_VERSION=1.5.0-p1
|
||||||
unset IMPALA_LIBUNWIND_URL
|
unset IMPALA_LIBUNWIND_URL
|
||||||
export IMPALA_LLVM_VERSION=5.0.1-p5
|
export IMPALA_LLVM_VERSION=5.0.1-p7
|
||||||
unset IMPALA_LLVM_URL
|
unset IMPALA_LLVM_URL
|
||||||
export IMPALA_LLVM_ASAN_VERSION=5.0.1-p5
|
export IMPALA_LLVM_ASAN_VERSION=5.0.1-p7
|
||||||
unset IMPALA_LLVM_ASAN_URL
|
unset IMPALA_LLVM_ASAN_URL
|
||||||
|
|
||||||
# To limit maximum memory available for the mini-cluster and CDH cluster, add the
|
# To limit maximum memory available for the mini-cluster and CDH cluster, add the
|
||||||
@@ -140,7 +140,7 @@ export IMPALA_LLVM_UBSAN_BASE_VERSION=5.0.1
|
|||||||
|
|
||||||
# Debug builds should use the release+asserts build to get additional coverage.
|
# Debug builds should use the release+asserts build to get additional coverage.
|
||||||
# Don't use the LLVM debug build because the binaries are too large to distribute.
|
# Don't use the LLVM debug build because the binaries are too large to distribute.
|
||||||
export IMPALA_LLVM_DEBUG_VERSION=5.0.1-asserts-p5
|
export IMPALA_LLVM_DEBUG_VERSION=5.0.1-asserts-p7
|
||||||
unset IMPALA_LLVM_DEBUG_URL
|
unset IMPALA_LLVM_DEBUG_URL
|
||||||
export IMPALA_LZ4_VERSION=1.9.3
|
export IMPALA_LZ4_VERSION=1.9.3
|
||||||
unset IMPALA_LZ4_URL
|
unset IMPALA_LZ4_URL
|
||||||
@@ -265,6 +265,7 @@ export IMPALA_OBS_VERSION=3.1.1-hw-42
|
|||||||
# free distributions, but Redhat UBI images are known to work.
|
# free distributions, but Redhat UBI images are known to work.
|
||||||
export IMPALA_REDHAT7_DOCKER_BASE=${IMPALA_REDHAT7_DOCKER_BASE:-"centos:centos7.9.2009"}
|
export IMPALA_REDHAT7_DOCKER_BASE=${IMPALA_REDHAT7_DOCKER_BASE:-"centos:centos7.9.2009"}
|
||||||
export IMPALA_REDHAT8_DOCKER_BASE=${IMPALA_REDHAT8_DOCKER_BASE:-"rockylinux:8.5"}
|
export IMPALA_REDHAT8_DOCKER_BASE=${IMPALA_REDHAT8_DOCKER_BASE:-"rockylinux:8.5"}
|
||||||
|
export IMPALA_REDHAT9_DOCKER_BASE=${IMPALA_REDHAT9_DOCKER_BASE:-"rockylinux:9.2"}
|
||||||
|
|
||||||
# When set to true, this instructs start-impala-cluster.py to start with Java 11 images
|
# When set to true, this instructs start-impala-cluster.py to start with Java 11 images
|
||||||
# created via 'make docker_java11_images' (or 'docker_debug_java11_images'). The Java
|
# created via 'make docker_java11_images' (or 'docker_debug_java11_images'). The Java
|
||||||
@@ -947,7 +948,7 @@ fi
|
|||||||
# overall build type) and does not apply when using a local Kudu build.
|
# overall build type) and does not apply when using a local Kudu build.
|
||||||
export USE_KUDU_DEBUG_BUILD=${USE_KUDU_DEBUG_BUILD-false}
|
export USE_KUDU_DEBUG_BUILD=${USE_KUDU_DEBUG_BUILD-false}
|
||||||
|
|
||||||
export IMPALA_KUDU_VERSION=${IMPALA_KUDU_VERSION-"345fd44ca3"}
|
export IMPALA_KUDU_VERSION=${IMPALA_KUDU_VERSION-"14c326461c"}
|
||||||
export IMPALA_KUDU_HOME=${IMPALA_TOOLCHAIN_PACKAGES_HOME}/kudu-$IMPALA_KUDU_VERSION
|
export IMPALA_KUDU_HOME=${IMPALA_TOOLCHAIN_PACKAGES_HOME}/kudu-$IMPALA_KUDU_VERSION
|
||||||
export IMPALA_KUDU_JAVA_HOME=\
|
export IMPALA_KUDU_JAVA_HOME=\
|
||||||
${IMPALA_TOOLCHAIN_PACKAGES_HOME}/kudu-${IMPALA_KUDU_VERSION}/java
|
${IMPALA_TOOLCHAIN_PACKAGES_HOME}/kudu-${IMPALA_KUDU_VERSION}/java
|
||||||
|
|||||||
@@ -39,14 +39,16 @@ set(DISTRO_BASE_IMAGE "UNSUPPORTED")
|
|||||||
if(${OS_DISTRIB_ID} STREQUAL "ubuntu")
|
if(${OS_DISTRIB_ID} STREQUAL "ubuntu")
|
||||||
if(${OS_DISTRIB_VERSION_ID} STREQUAL "16.04" OR
|
if(${OS_DISTRIB_VERSION_ID} STREQUAL "16.04" OR
|
||||||
${OS_DISTRIB_VERSION_ID} STREQUAL "18.04" OR
|
${OS_DISTRIB_VERSION_ID} STREQUAL "18.04" OR
|
||||||
${OS_DISTRIB_VERSION_ID} STREQUAL "20.04")
|
${OS_DISTRIB_VERSION_ID} STREQUAL "20.04" OR
|
||||||
|
${OS_DISTRIB_VERSION_ID} STREQUAL "22.04")
|
||||||
set(DISTRO_BASE_IMAGE "ubuntu:${OS_DISTRIB_VERSION_ID}")
|
set(DISTRO_BASE_IMAGE "ubuntu:${OS_DISTRIB_VERSION_ID}")
|
||||||
set(QUICKSTART_BASE_IMAGE "ubuntu:${OS_DISTRIB_VERSION_ID}")
|
set(QUICKSTART_BASE_IMAGE "ubuntu:${OS_DISTRIB_VERSION_ID}")
|
||||||
endif()
|
endif()
|
||||||
if (${OS_DISTRIB_VERSION_ID} STREQUAL "16.04" OR
|
if (${OS_DISTRIB_VERSION_ID} STREQUAL "16.04" OR
|
||||||
${OS_DISTRIB_VERSION_ID} STREQUAL "18.04")
|
${OS_DISTRIB_VERSION_ID} STREQUAL "18.04")
|
||||||
set(PIP "python-pip")
|
set(PIP "python-pip")
|
||||||
elseif (${OS_DISTRIB_VERSION_ID} STREQUAL "20.04")
|
elseif (${OS_DISTRIB_VERSION_ID} STREQUAL "20.04" OR
|
||||||
|
${OS_DISTRIB_VERSION_ID} STREQUAL "22.04")
|
||||||
set(PIP "python3-pip")
|
set(PIP "python3-pip")
|
||||||
endif()
|
endif()
|
||||||
elseif(${OS_DISTRIB_ID} STREQUAL "rhel" OR
|
elseif(${OS_DISTRIB_ID} STREQUAL "rhel" OR
|
||||||
@@ -59,6 +61,8 @@ elseif(${OS_DISTRIB_ID} STREQUAL "rhel" OR
|
|||||||
set(DISTRO_BASE_IMAGE "$ENV{IMPALA_REDHAT7_DOCKER_BASE}")
|
set(DISTRO_BASE_IMAGE "$ENV{IMPALA_REDHAT7_DOCKER_BASE}")
|
||||||
elseif(${OS_DISTRIB_VERSION_ID} MATCHES "8.*")
|
elseif(${OS_DISTRIB_VERSION_ID} MATCHES "8.*")
|
||||||
set(DISTRO_BASE_IMAGE "$ENV{IMPALA_REDHAT8_DOCKER_BASE}")
|
set(DISTRO_BASE_IMAGE "$ENV{IMPALA_REDHAT8_DOCKER_BASE}")
|
||||||
|
elseif(${OS_DISTRIB_VERSION_ID} MATCHES "9.*")
|
||||||
|
set(DISTRO_BASE_IMAGE "$ENV{IMPALA_REDHAT9_DOCKER_BASE}")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
MESSAGE(STATUS "Picked docker base image based on host OS: ${DISTRO_BASE_IMAGE}")
|
MESSAGE(STATUS "Picked docker base image based on host OS: ${DISTRO_BASE_IMAGE}")
|
||||||
|
|||||||
@@ -108,7 +108,10 @@ function build() {
|
|||||||
fi
|
fi
|
||||||
if command -v apt-get > /dev/null; then
|
if command -v apt-get > /dev/null; then
|
||||||
apt-get update
|
apt-get update
|
||||||
apt-get install -y sudo git lsb-release python
|
# The 'python' package doesn't exist on Ubuntu 22, so this installs python3.
|
||||||
|
# TODO: It might not be necessary to install python here, as the container
|
||||||
|
# will invoke bootstrap_system.sh.
|
||||||
|
apt-get install -y sudo git python3
|
||||||
elif grep 'release 8\.' /etc/redhat-release; then
|
elif grep 'release 8\.' /etc/redhat-release; then
|
||||||
# WARNING: Install the following packages one by one!
|
# WARNING: Install the following packages one by one!
|
||||||
# Installing them in a common transaction breaks something inside yum/dnf,
|
# Installing them in a common transaction breaks something inside yum/dnf,
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ public class LdapImpalaShellTest {
|
|||||||
// Runs the following command:
|
// Runs the following command:
|
||||||
// python -c "import ssl; print hasattr(ssl, 'create_default_context')"
|
// python -c "import ssl; print hasattr(ssl, 'create_default_context')"
|
||||||
String[] cmd = {
|
String[] cmd = {
|
||||||
"python", "-c", "import ssl; print hasattr(ssl, 'create_default_context')"};
|
"python", "-c", "import ssl; print(hasattr(ssl, 'create_default_context'))"};
|
||||||
return Boolean.parseBoolean(RunShellCommand.Run(cmd, true, "", "").replace("\n", ""));
|
return Boolean.parseBoolean(RunShellCommand.Run(cmd, true, "", "").replace("\n", ""));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ def junitxml_prune_notrun(junitxml_filename):
|
|||||||
# not support an XML declaration on Python 2.6, so use minidom to write the XML.
|
# not support an XML declaration on Python 2.6, so use minidom to write the XML.
|
||||||
root_node_minidom = minidom.parseString(ET.tostring(root))
|
root_node_minidom = minidom.parseString(ET.tostring(root))
|
||||||
junitxml_string = root_node_minidom.toxml(encoding="utf-8")
|
junitxml_string = root_node_minidom.toxml(encoding="utf-8")
|
||||||
with open(junitxml_filename, "w") as f:
|
with open(junitxml_filename, "wb") as f:
|
||||||
f.write(junitxml_string)
|
f.write(junitxml_string)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -53,8 +53,10 @@ add_custom_target(shell_python2_install DEPENDS "${PYTHON2_VENV}" shell_pypi_tes
|
|||||||
COMMAND "${PYTHON2_VENV}/bin/pip" install --cache-dir "${PYTHON2_PIP_CACHE}" "${SHELL_TEST_PKG}"
|
COMMAND "${PYTHON2_VENV}/bin/pip" install --cache-dir "${PYTHON2_PIP_CACHE}" "${SHELL_TEST_PKG}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# In cases where system python3 is old, this can use impala-virtualenv, so it
|
||||||
|
# needs to depend on impala_python.
|
||||||
add_custom_command(OUTPUT "${PYTHON3_VENV}" DEPENDS impala_python
|
add_custom_command(OUTPUT "${PYTHON3_VENV}" DEPENDS impala_python
|
||||||
COMMAND impala-virtualenv --python "$ENV{IMPALA_SYSTEM_PYTHON3}" "${PYTHON3_VENV}"
|
COMMAND "${CMAKE_SOURCE_DIR}/bin/cmake_aux/create_py3_virtualenv.sh" "${PYTHON3_VENV}"
|
||||||
)
|
)
|
||||||
|
|
||||||
add_custom_target(shell_python3_install DEPENDS "${PYTHON3_VENV}" shell_pypi_test_package
|
add_custom_target(shell_python3_install DEPENDS "${PYTHON3_VENV}" shell_pypi_test_package
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import json
|
|||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import pytest
|
import pytest
|
||||||
|
import re
|
||||||
import requests
|
import requests
|
||||||
import signal
|
import signal
|
||||||
import ssl
|
import ssl
|
||||||
@@ -244,18 +245,26 @@ class TestClientSsl(CustomClusterTestSuite):
|
|||||||
run_impala_shell_cmd(vector, args, expect_success=False)
|
run_impala_shell_cmd(vector, args, expect_success=False)
|
||||||
|
|
||||||
def _validate_positive_cases(self, vector, ca_cert=""):
|
def _validate_positive_cases(self, vector, ca_cert=""):
|
||||||
|
python3_10_version_re = re.compile(r"using Python 3\.1[0-9]")
|
||||||
shell_options = ["--ssl", "-q", "select 1 + 2"]
|
shell_options = ["--ssl", "-q", "select 1 + 2"]
|
||||||
result = run_impala_shell_cmd(vector, shell_options, wait_until_connected=False)
|
result = run_impala_shell_cmd(vector, shell_options, wait_until_connected=False)
|
||||||
for msg in [self.SSL_ENABLED, self.CONNECTED, self.FETCHED]:
|
for msg in [self.SSL_ENABLED, self.CONNECTED, self.FETCHED]:
|
||||||
assert msg in result.stderr
|
assert msg in result.stderr
|
||||||
assert self.DEPRECATION_WARNING not in result.stderr
|
# Python >3.10 has deprecated ssl.PROTOCOL_TLS and impala-shell currently emits a
|
||||||
|
# DeprecationWarning for that version. As a temporary workaround, this skips the
|
||||||
|
# assert about deprecation for Python 3.10 or above. This can be removed when
|
||||||
|
# IMPALA-12219 is fixed.
|
||||||
|
# Note: This is the version that impala-shell uses, not the version pytests uses.
|
||||||
|
if not python3_10_version_re.search(result.stderr):
|
||||||
|
assert self.DEPRECATION_WARNING not in result.stderr
|
||||||
|
|
||||||
if ca_cert != "":
|
if ca_cert != "":
|
||||||
shell_options = shell_options + ["--ca_cert=%s" % ca_cert]
|
shell_options = shell_options + ["--ca_cert=%s" % ca_cert]
|
||||||
result = run_impala_shell_cmd(vector, shell_options, wait_until_connected=False)
|
result = run_impala_shell_cmd(vector, shell_options, wait_until_connected=False)
|
||||||
for msg in [self.SSL_ENABLED, self.CONNECTED, self.FETCHED]:
|
for msg in [self.SSL_ENABLED, self.CONNECTED, self.FETCHED]:
|
||||||
assert msg in result.stderr
|
assert msg in result.stderr
|
||||||
assert self.DEPRECATION_WARNING not in result.stderr
|
if not python3_10_version_re.search(result.stderr):
|
||||||
|
assert self.DEPRECATION_WARNING not in result.stderr
|
||||||
|
|
||||||
def _verify_ssl_webserver(self):
|
def _verify_ssl_webserver(self):
|
||||||
for port in ["25000", "25010", "25020"]:
|
for port in ["25000", "25010", "25020"]:
|
||||||
|
|||||||
Reference in New Issue
Block a user