Source: mariadb
Version: 1:11.8.6-6
Usertags: pidof-without-procps
Dear maintainer(s) of mariadb,
it appears that mariadb uses `pidof` in its testsuite, or that
at least one of its binary packages uses `pidof` at runtime.
Historically, `pidof` was provided by the Essential package
`sysvinit-tools`, making an explicit dependency unnecessary. However
`pidof` will soon be moved to `procps` and will no longer be part of
the Essential set.
Please add an explicit dependency on `procps`:
* via the `Depends:` field of all binary packages of mariadb
that use `pidof` at runtime;
* via the `Build-Depends:` field of mariadb, if `pidof` is
used in tests run at build-time;
* via the `Depends:` field of `debian/control/tests`, if `pidof` is
used in autopkgtests.
To prevent any disruption for users of mariadb, please add
this dependency now, before `pidof` is moved from `sysvinit-utils` to
`procps`. Alternatively, you could remove all uses of `pidof`.
It is believed that mariadb uses `pidof` due to the following
code snippets:
```
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/core_dumps/save_stack.sh
name=$1
echo "\nStack trace of $1"
eu-stack -p `pidof $name` -n 0 | tee ${LOG_PATH}/${name}_callstacks.txt
}
path: mariadb_1:11.8.6-3/mysql-test/suite/innodb/t/alter_inplace_perfschema.test
SELECT @final_count - @init_count;
#--exec lsof -p `pidof mysqld`
SET DEBUG_SYNC = 'now SIGNAL gone';
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/versioning/BRM/script-fcns
fi
if [ -z "$pid" ]; then
pid=`pidof -o $$ -o $PPID -o %PPID -x $1 || \
pidof -o $$ -o $PPID -o %PPID -x $base`
fi
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/versioning/BRM/script-fcns
fi
pidof -c -o $$ -o $PPID -o %PPID -x $1 || \
pidof -c -o $$ -o $PPID -o %PPID -x $base
}
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/versioning/BRM/script-fcns
# First try "pidof"
pid=`pidof -o $$ -o $PPID -o %PPID -x $1 || \
pidof -o $$ -o $PPID -o %PPID -x ${base}`
if [ -n "$pid" ]; then
echo $"${base} (pid $pid) is running..."
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/versioning/BRM/script-fcns
if [ -z "$pid" ]; then
pid=`pidof -o $$ -o $PPID -o %PPID -x $1 || \
pidof -o $$ -o $PPID -o %PPID -x $base`
fi
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/mcs_node_control/custom_dispatchers/container.sh
done
echo `date`: Sending SIGKILL >> $LOG_FILE
kill -9 $(pidof $PROGS) > /dev/null
fi
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/mcs_node_control/custom_dispatchers/container.sh
echo `date`: Sending SIGTERM >> $LOG_FILE
kill $(pidof $PROGS) > /dev/null
sleep 3
# Make sure StorageManager had a chance to shutdown clean
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/mcs_node_control/custom_dispatchers/container.sh
if [[ ! -z "$(pidof $PROGS)" ]]; then
# Save BRM only on the primary node now.
if [[ ! -z "$(pidof controllernode)" ]]; then
$MCS_INSTALL_BIN/mcs-savebrm.py &>> $LOG_PREFIX/savebrm.log 2>&1
fi
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/mcs_node_control/custom_dispatchers/container.sh
echo `date`: Stopping... >> $LOG_FILE
if [[ ! -z "$(pidof $PROGS)" ]]; then
# Save BRM only on the primary node now.
if [[ ! -z "$(pidof controllernode)" ]]; then
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/mcs_node_control/custom_dispatchers/container.sh
# Make sure StorageManager had a chance to shutdown clean
counter=1
while [ -n "$(pidof StorageManager)" -a $counter -le 60 ]
do
sleep 1
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/cs_package_manager.sh
mcs_offine=false
if [ "$pm_number" == "1" ]; then
if [ -z $(pidof "PrimProc") ]; then
# printf "\n[+] Columnstore offline already";
mcs_offine=true
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/cs_package_manager.sh
if [ "$pm_number" == "1" ]; then
if [ -n "$(pidof PrimProc)" ]; then
num_cs_processlist=$(pgrep -f
"PrimProc|ExeMgr|DMLProc|DDLProc|WriteEngineServer|StorageManager|controllernode|workernode|save_brm|mcs-loadbrm.py"
| wc -l)
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/columnstore_review.sh
SCNDS=$(mariadb -ABNe "show global status like 'Uptime';" | awk '{print $2}')
ech0 "Mariadb uptime: up $(displaytime $SCNDS)"
CMAPIPID=$(pidof /usr/share/columnstore/cmapi/python/bin/python3)
if [ "$CMAPIPID" ]; then
CMAPI_UPTIME=$(ps -p $CMAPIPID -o etimes | tail -1 | xargs)
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/columnstore_review.sh
$eu -p $(pidof DDLProc) > "$OUTDIR/$EU_FOLDER/eu-DDLProc.txt" ;
$eu -p $(pidof mariadbd) > "$OUTDIR/$EU_FOLDER/eu-mariadbd.txt" ;
$eu -p $(pidof WriteEngineServer) >
"$OUTDIR/$EU_FOLDER/eu-WriteEngineServer.txt" ;
$eu -p $(pidof controllernode) > "$OUTDIR/$EU_FOLDER/eu-controllernode.txt" ;
$eu -p $(pidof workernode) > "$OUTDIR/$EU_FOLDER/eu-workernode.txt" ;
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/columnstore_review.sh
function exists_minimal_columnstore_running() {
if [ ! $CS_RUNNING ]; then return; fi
CONTROLLERNODEPID=$(pidof /usr/bin/controllernode)
WORKERNODEPID=$(pidof /usr/bin/workernode)
PRIMPROCPID=$(pidof /usr/bin/PrimProc)
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/columnstore_review.sh
echo "DMLProc uptime: up $(displaytime $DMLPROC_UPTIME)"
fi
DDLPROCPID=$(pidof /usr/bin/DDLProc)
if [ "$DDLPROCPID" ]; then
DDLPROC_UPTIME=$(ps -p $DDLPROCPID -o etimes | tail -1 | xargs)
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/columnstore_review.sh
echo "WriteEngineServer uptime: up $(displaytime
$WRITEENGINESERVER_UPTIME)"
fi
DMLPROCPID=$(pidof /usr/bin/DMLProc)
if [ "$DMLPROCPID" ]; then
DMLPROC_UPTIME=$(ps -p $DMLPROCPID -o etimes | tail -1 | xargs)
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/columnstore_review.sh
WRITEENGINESERVERPID=$(pidof /usr/bin/WriteEngineServer)
DMLPROCPID=$(pidof /usr/bin/DMLProc)
DDLPROCPID=$(pidof /usr/bin/DDLProc)
EXEMGRPID=$(pidof /usr/bin/ExeMgr)
if [ $CAN_CONNECT ]; then
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/columnstore_review.sh
echo "Workernode uptime: up $(displaytime $WORKERNODE_UPTIME)"
fi
CONTROLLERNODEPID=$(pidof /usr/bin/controllernode)
if [ "$CONTROLLERNODEPID" ]; then
CONTROLLERNODE_UPTIME=$(ps -p $CONTROLLERNODEPID -o etimes | tail -1 |
xargs)
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/columnstore_review.sh
echo "Primproc uptime: up $(displaytime $PRIMPROC_UPTIME)"
fi
EXEMGRPID=$(pidof /usr/bin/ExeMgr)
if [ "$EXEMGRPID" ]; then
EXEMGR_UPTIME=$(ps -p $EXEMGRPID -o etimes | tail -1 | xargs)
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/columnstore_review.sh
echo "ExeMgr uptime: up $(displaytime $EXEMGR_UPTIME)"
fi
WRITEENGINESERVERPID=$(pidof /usr/bin/WriteEngineServer)
if [ "$WRITEENGINESERVERPID" ]; then
WRITEENGINESERVER_UPTIME=$(ps -p $WRITEENGINESERVERPID -o etimes | tail -1
| xargs)
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/columnstore_review.sh
WORKERNODEPID=$(pidof /usr/bin/workernode)
PRIMPROCPID=$(pidof /usr/bin/PrimProc)
WRITEENGINESERVERPID=$(pidof /usr/bin/WriteEngineServer)
DMLPROCPID=$(pidof /usr/bin/DMLProc)
DDLPROCPID=$(pidof /usr/bin/DDLProc)
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/columnstore_review.sh
ech0 "Cmapi uptime: up $(displaytime $CMAPI_UPTIME)"
fi
WORKERNODEPID=$(pidof /usr/bin/workernode)
if [ "$WORKERNODEPID" ]; then
WORKERNODE_UPTIME=$(ps -p $WORKERNODEPID -o etimes | tail -1 | xargs)
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/columnstore_review.sh
$eu -p $(pidof PrimProc) > "$OUTDIR/$EU_FOLDER/eu-PrimProc.txt" ;
$eu -p $(pidof DMLProc) > "$OUTDIR/$EU_FOLDER/eu-DMLProc.txt" ;
$eu -p $(pidof DDLProc) > "$OUTDIR/$EU_FOLDER/eu-DDLProc.txt" ;
$eu -p $(pidof mariadbd) > "$OUTDIR/$EU_FOLDER/eu-mariadbd.txt" ;
$eu -p $(pidof WriteEngineServer) >
"$OUTDIR/$EU_FOLDER/eu-WriteEngineServer.txt" ;
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/columnstore_review.sh
echo "Controlernode uptime: up $(displaytime $CONTROLLERNODE_UPTIME)"
fi
PRIMPROCPID=$(pidof /usr/bin/PrimProc)
if [ "$PRIMPROCPID" ]; then
PRIMPROC_UPTIME=$(ps -p $PRIMPROCPID -o etimes | tail -1 | xargs)
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/columnstore_review.sh
CONTROLLERNODEPID=$(pidof /usr/bin/controllernode)
WORKERNODEPID=$(pidof /usr/bin/workernode)
PRIMPROCPID=$(pidof /usr/bin/PrimProc)
WRITEENGINESERVERPID=$(pidof /usr/bin/WriteEngineServer)
DMLPROCPID=$(pidof /usr/bin/DMLProc)
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/oam/install_scripts/columnstore-pre-uninstall.in
kill $(pidof $PROGS) > /dev/null
sleep 3
kill -9 $(pidof $PROGS) > /dev/null
clearShm > /dev/null 2>&1
fi
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/oam/install_scripts/columnstore-pre-uninstall.in
else
PROGS='PrimProc ExeMgr DMLProc DDLProc WriteEngineServer StorageManager
controllernode workernode'
kill $(pidof $PROGS) > /dev/null
sleep 3
kill -9 $(pidof $PROGS) > /dev/null
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/mcs_backup_manager.sh
check_for_dependencies() {
# Check pidof works
if [ $mode != "indirect" ] && ! command -v pidof > /dev/null; then
handle_failed_dependencies "\n\n[!] Please make sure pidof is installed
and executable\n\n"
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/mcs_backup_manager.sh
check_for_dependencies() {
# Check pidof works
if [ $mode != "indirect" ] && ! command -v pidof > /dev/null; then
handle_failed_dependencies "\n\n[!] Please make sure pidof is installed
and executable\n\n"
fi
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/mcs_backup_manager.sh
{
if [ $mode == "indirect" ] || $skip_locks; then printf "\n"; return; fi;
if ! $skip_mdb && ! pidof mariadbd > /dev/null; then
handle_early_exit_on_backup "\n[X] MariaDB is offline ... Needs to be
online to issue read only lock and to run mariadb-backup \n\n" true;
fi;
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/mcs_backup_manager.sh
printf "\nClearing Locks\n";
# Clear MDB Lock
if pidof mariadbd > /dev/null && [ $read_lock ]; then
printf " - Clearing read-only lock on MariaDB Server ... ";
if mariadb -e "UNLOCK TABLES;" && mariadb -qsNe "set global
read_only=$ORIGINAL_READONLY_STATUS;"; then
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/mcs_backup_manager.sh
ORIGINAL_READONLY_STATUS=$(mariadb -qsNe "select @@read_only;")
# Set MariaDB Server ReadOnly Mode
if pidof mariadbd > /dev/null; then
printf " - Issuing read-only lock to MariaDB Server ... ";
if mariadb -e "FLUSH TABLES WITH READ LOCK;"; then
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/mcs_backup_manager.sh
# Make sure the database is offline
if [ "$mode" == "direct" ]; then
if [ -z $(pidof PrimProc) ]; then
printf " - Columnstore Status ... Offline\n";
else
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/mcs_backup_manager.sh
if [ "$mode" != "direct" ] && [ "$mode" != "indirect" ] ; then printf
"\n[!!!] Invalid field --mode: $mode\n"; exit 1; fi
if [ $mode == "direct" ]; then
if [ -z $(pidof PrimProc) ] || [ -z $(pidof WriteEngineServer) ]; then
printf " - Columnstore is OFFLINE \n";
export columnstore_online=false;
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/mcs_backup_manager.sh
# Check pidof works
if [ $mode != "indirect" ] && ! command -v pidof > /dev/null; then
handle_failed_dependencies "\n\n[!] Please make sure pidof is installed
and executable\n\n"
fi
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/mcs_backup_manager.sh
fi
if [ -z $(pidof mariadbd) ]; then
printf " - MariaDB Server Status ... Offline\n";
else
path:
mariadb_1:11.8.6-3/storage/columnstore/columnstore/cmapi/scripts/mcs_backup_manager.sh
# Detect if columnstore online
if [ $mode == "direct" ]; then
if [ -z $(pidof PrimProc) ] || [ -z $(pidof WriteEngineServer) ]; then
printf " - Columnstore is OFFLINE \n";
export columnstore_online=false;
```
Feel free to close this issue if this is a false positive (for example
if this code is in an unreachable code path).
Regards,
--
Gioele Barabucci