Feedback
Did this article resolve your question/issue?

   

Article

Suggested method of parsing PROMON output to find out if a quiet point has been enabled

« Go Back

Information

 
TitleSuggested method of parsing PROMON output to find out if a quiet point has been enabled
URL NameP103326
Article Number000147858
EnvironmentProduct: Progress
Version: 9.1
Product: OpenEdge
Version: 10.1x, 10.2x, 11.x
OS: Unix Linux
Question/Problem Description
Suggested method of parsing promon output to find out if a quiet point has been enabled
How to find out if PROQUIET -C enable has succeeded?
Why does a quiet point sometimes not get enabled immediately?
Quiet point has been enabled by the broker. (5583)
How to know if a PROQUIET point has been granted ?
Steps to Reproduce
Clarifying Information
Error Message
Defect Number
Enhancement Number
Cause
Resolution
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 Output

In 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
Workaround
Notes
Last Modified Date11/20/2020 7:38 AM
Attachment 
Files
Disclaimer The origins of the information on this site may be internal or external to Progress Software Corporation (“Progress”). Progress Software Corporation makes all reasonable efforts to verify this information. However, the information provided is for your information only. Progress Software Corporation makes no explicit or implied claims to the validity of this information.

Any sample code provided on this site is not supported under any Progress support program or service. The sample code is provided on an "AS IS" basis. Progress makes no warranties, express or implied, and disclaims all implied warranties including, without limitation, the implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample code is borne by the user. In no event shall Progress, its employees, or anyone else involved in the creation, production, or delivery of the code be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample code, even if Progress has been advised of the possibility of such damages.