This is an automated email from the ASF dual-hosted git repository. tuhaihe pushed a commit to branch REL_2_STABLE in repository https://gitbox.apache.org/repos/asf/cloudberry-pxf.git
commit 1854616c4f0e6d378a44ea4640fd766cae00510d Author: Dianjin Wang <[email protected]> AuthorDate: Mon Sep 7 17:34:17 2026 +0800 CLI: bypass HTTP proxy when probing the local PXF endpoints The pxf script probes the running service with curl over localhost: until $curl --silent --connect-timeout 1 -I "http://localhost:$PXF_PORT" | grep 'PXF Server' curl does not bypass proxies for localhost, so when http_proxy is set in the environment -- common on hosts that need a proxy to fetch build dependencies -- the probe is sent to the proxy, which cannot reach the loopback interface of the PXF host and answers 502 Bad Gateway. The grep never matches, so `pxf start` retries for all 300 attempts while the service is up and healthy, and `pxf status` reports "PXF is down" for the same reason. `pxf stop` is affected too: the POST to /actuator/shutdown fails silently and it falls back to SIGTERM/SIGKILL instead of shutting down gracefully. All three endpoints are by definition local to the host, so they should never be routed through a proxy. Pass --noproxy '*' to each of them. (cherry picked from commit 2bca7138100089f891aa2be2d1c8a5e6298a237d) --- server/pxf-service/src/scripts/pxf | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/server/pxf-service/src/scripts/pxf b/server/pxf-service/src/scripts/pxf index 522d1eda..fe010530 100755 --- a/server/pxf-service/src/scripts/pxf +++ b/server/pxf-service/src/scripts/pxf @@ -130,7 +130,7 @@ function waitForSpringBoot() { # wait until spring boot is up: echoYellow 'Checking if PXF is up and running...' - until $curl --silent --connect-timeout 1 -I "http://localhost:$PXF_PORT" | grep 'PXF Server' > /dev/null; do + until $curl "${curl_opts[@]}" --silent --connect-timeout 1 -I "http://localhost:$PXF_PORT" | grep 'PXF Server' > /dev/null; do if (( ++attempts == max_attempts )); then echoRed 'ERROR: PXF is down - the application is not running' return 1 @@ -151,7 +151,7 @@ function waitForSpringBoot() { function checkWebapp() { waitForSpringBoot "$1" "$2" || return 1 - curlResponse=$($curl -s "http://localhost:${PXF_PORT}/actuator/health") + curlResponse=$($curl "${curl_opts[@]}" -s "http://localhost:${PXF_PORT}/actuator/health") [[ $curlResponse == {\"status\":\"UP\"* ]] || fail "PXF is inaccessible. Check logs ($PXF_LOGDIR) for more information" return 0 @@ -187,6 +187,10 @@ function validate_system() { if ! curl=$(command -v curl); then fail 'curl is not installed, please install' fi + # PXF's actuator endpoints are always local to this host, so never route the + # probes through an HTTP proxy. Without this, an http_proxy set in the + # environment makes start/status/stop misreport a healthy PXF as down. + curl_opts=(--noproxy '*') } function printUsage() { @@ -435,7 +439,7 @@ function doStop() { echoYellow "Stopping PXF [pid=$pid]..." # first try endpoint (assume it might be disabled) - if $curl --max-time 5 --silent -X POST "localhost:$PXF_PORT/actuator/shutdown" | grep "Shutting down, bye..." > /dev/null; then + if $curl "${curl_opts[@]}" --max-time 5 --silent -X POST "localhost:$PXF_PORT/actuator/shutdown" | grep "Shutting down, bye..." > /dev/null; then for i in $(seq 1 $STOP_WAIT_TIME); do if isRunning "$pid"; then sleep 1 --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
