Consultor Eletrônico



Kbase P99512: What happens when a proquiet is requested
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   2/22/2010
Status: Verified

GOAL:

What happens when proquiet is requested

GOAL:

What happens when proquiet is enabled

FACT(s) (Environment):

All Supported Operating Systems
Progress/OpenEdge Product Family

FIX:

The quiet point processing is performed as a co-operative effort between the _mprshut (proquiet) and the broker processes:

- The _mprshut process requests to enable or disable a quiet point and the broker satisfies it.
- Once the proquiet is requested the Broker has a wait of TXX (waiting for TXE exclusive mode lock) until it is enabled.

The execution summary of the two processes is as follows:
_mprshut:

1. logs in and prints:
QUIET 5: Quiet point request login by x on y. (5569)
2. makes a quiet point request of the broker
3. Loop until the quiet point state changes to quiet point enabled or reject
4. each loop ensures broker is still running and the database has not been marked for shutdown.
5. when quiet point state changes to quiet point enabled: the _mprshut process disconnects and returns with 0 status
6. if quiet point state changes to quiet point reject: the _mprshut process disconnects and returns with error status

broker:

The broker processes events every 3 seconds
One possible event is to enable a quiet point
This occurs when proshut sets the quiet point status to request


The quiet point is then enabled by the following processing:
1. grab exclusive access to shared resources (proquiet needs TXE, MTX, BIB, and AIB latches clear)
2. switches after image extent (if after-imaging is enabled)
3. flushes the bi buffer pool
4. inhibit new writes to the ai and bi
5. prints out:
BROKER 0: Quiet point has been enabled by the broker. (5583)
6. sets quiet point status to enabled
7. loops on watchdog processing until quiet point is disabled

The quiet point is then disabled by the following processing:
1. notice the quiet point status is set to disable (by proshut)
2. releases held resources
3. prints out:
BROKER 0: Quiet point has been disabled by the broker. (5584)
4. sets quiet point status to normal
5. continue with regular processing.

The above describes the standard proquiet functionality. The proquiet utility was enhanced beginning in Progress 9.1E02, OpenEdge 10.0B03, and 10.1A to support a quiet point that stops all write activity in the database within 15 seconds without requiring a latch. Please refer to Progress Solution P112492, "What is Proquiet nolock?" for further details and considerations of implementing this feature.

Understanding the above internal processing of the proquiet, the reasons that there is sometimes a delay in the proquiet being granted can therefore be:

- delays in flushing of the bi buffer pool and the switching of ai extents, where the system is experiencing hardware i/o problems, (note: switching of ai extents is not a consideration with the enhanced proquiet nolock feature)
- only a short duration conflict is normally expected with other latches acquired (the latch on the ai and bi buffer pools and the micro transaction latch as these are not held for a long time. (note: waiting on a micro transaction latch is not a consideration with the enhanced proquiet nolock feature)
- the broker is waiting on the exclusive TXE latch, which other processing could be holding the TXE for example when there is a very large transaction back out, or many. transaction backouts being processed. Particularly if there is evidence of abnormal terminations (HANGUP, KILL signals) in the log file while waiting for the quiet point. Meaning that the the broker is busy cleaning these latches up rather than performing its "process event cycle" every 3 seconds. Note: the cleanup is normally done by the server process in the case of client-server connections, if the log file shows that the server has died, this task falls to the broker:
BROKER 0: Disconnecting client 24 of dead server 1. (2526)
BROKER 0: Begin transaction back out. (2252)
Please note the sub-text here - normally, this is not an issue. With the proquiet nolock feature, we essentially allow microtransaction processing to the ai file while granting the proquiet anyway. This is why, the proquiet nolock feature does not switch the ai file, which is different from the standard proquiet functionality.
.