53 lines
2.0 KiB
Diff
53 lines
2.0 KiB
Diff
---
|
|
ocf/heat-engine | 24 +++++++++++++++++++++---
|
|
1 file changed, 21 insertions(+), 3 deletions(-)
|
|
|
|
--- a/ocf/heat-engine
|
|
+++ b/ocf/heat-engine
|
|
@@ -238,6 +238,24 @@ heat_engine_status() {
|
|
fi
|
|
}
|
|
|
|
+# Function to check a process for port usage, as well as children
|
|
+check_port() {
|
|
+ local port=$1
|
|
+ local pid=$2
|
|
+
|
|
+ local children=`ps -ef | awk -v ppid=$pid '$3 == ppid { print $2}'`
|
|
+
|
|
+ for p in $pid $children
|
|
+ do
|
|
+ netstat -punt | grep -s "$port" | grep -s "$p" | grep -qs "ESTABLISHED"
|
|
+ if [ $? -eq 0 ]
|
|
+ then
|
|
+ return 0
|
|
+ fi
|
|
+ done
|
|
+ return 1
|
|
+}
|
|
+
|
|
heat_engine_monitor() {
|
|
local rc
|
|
local pid
|
|
@@ -258,7 +276,7 @@ heat_engine_monitor() {
|
|
# We are sure to hit the heat-engine process and not other heat process with the same connection behavior (for example heat-api)
|
|
if ocf_is_true "$OCF_RESKEY_zeromq"; then
|
|
pid=`cat $OCF_RESKEY_pid`
|
|
- engine_db_check=`netstat -punt | grep -s "$OCF_RESKEY_database_server_port" | grep -s "$pid" | grep -qs "ESTABLISHED"`
|
|
+ engine_db_check=`check_port "$OCF_RESKEY_database_server_port" "$pid"`
|
|
rc_db=$?
|
|
if [ $rc_db -ne 0 ]; then
|
|
ocf_log err "heat-engine is not connected to the database server: $rc_db"
|
|
@@ -266,9 +284,9 @@ heat_engine_monitor() {
|
|
fi
|
|
else
|
|
pid=`cat $OCF_RESKEY_pid`
|
|
- engine_db_check=`netstat -punt | grep -s "$OCF_RESKEY_database_server_port" | grep -s "$pid" | grep -qs "ESTABLISHED"`
|
|
+ engine_db_check=`check_port "$OCF_RESKEY_database_server_port" "$pid"`
|
|
rc_db=$?
|
|
- engine_amqp_check=`netstat -punt | grep -s "$OCF_RESKEY_amqp_server_port" | grep -s "$pid" | grep -qs "ESTABLISHED"`
|
|
+ engine_amqp_check=`check_port "$OCF_RESKEY_amqp_server_port" "$pid"`
|
|
rc_amqp=$?
|
|
if [ $rc_amqp -ne 0 ] || [ $rc_db -ne 0 ]; then
|
|
ocf_log err "Heat Engine is not connected to the AMQP server and/or the database server: AMQP connection test returned $rc_amqp and database connection test returned $rc_db"
|