When a user issues a PROQUIET command, a quiet point flag is set when an Enterprise Database License is in use. Customers with mirrored systems often break the mirror immediately after issuing the PROQUIET command or check for a success Return Code from the _mprshut executable. This can result in the mirror splitting before the quiet point has actually been enabled. One way to get around this limitation is to parse PROMON output to find out if a quiet point has been enabled before breaking the mirror.
The only caveat in using PROQUIET is that you must check that the quiet was successfully
started | stopped before undertaking any further operations against the database and not assume that the database has been quiesced as soon as the "proquiet -C enable | disable" command has been run.
Unless there are specific reasons at the time that the "
proquiet -C enable" cannot establish a quiet point, there is no point in running a script to query return codes. Once all the necessary latches to prevent any type of writes from the database have been acquired by the broker, we acknowledge through shared memory that the quiet point was enabled. This is communicated to the requester process and it is then free to print the enabled message (5583) and return to the (quiet point requester) user with an appropriate return code = 0.
As soon as the user session has been granted the PROQUIET
, it exits (453) and is no longer visible in (say) a: ps -ef | grep "_mprshut -C quiet enable" | echo $? There are no VST available to query the PROQUIET
state.For example:
QUIET 5: Quiet point request login by <user> on <ttyxxx>. (5569)
BROKER 0: Quiet point has been enabled by the broker. (5583)
QUIET 5: Logout by <user> on <ttyxxx>. (453)
One of the reasons that the (5583) may take longer than expected to return is because resources held by a dead user (for example) are not available until TCP/IP timeout's kick in or the WatchDog utility cleans these up. ie: a client that is holding an update TXE latch and causing the request for quiet point to wait as it should, by design, on the TXE latch being released. Parsing PROMON OutputIn Progress 9.1E, OpenEdge 10.0B and later - the PROMON activity screen has been enhanced to show *** Quiet Point is Active ***. A shell script can be created to detect this in a loop as the first step in finding out if the quiet point has been enabled. If the result fails to return a favorable result after the set iterations, further investigation into what is causing the delay can ensue.
Example:
#quiet.sh
DBNAME=dbname
LOOPTIME=10
while true
do
qp=`promon $DBNAME < ./keys.txt 2>/dev/null | grep "*** Quiet Point" | wc -l`
if test $qp -eq "0"
then echo "no quiet point"
else echo "quiet point's active"
fi
sleep $LOOPTIME
done
#PROMON keys.txt
5
q
q