Consultor Eletrônico



Kbase 20449: How the Progress Watchdog Works?
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   18/04/2011
Status: Verified

GOAL:

How the Progress Watchdog Works?

GOAL:

What is the purpose of Watchdog?

FACT(s) (Environment):

All Supported Operating Systems
Progress/OpenEdge Product Family
OpenEdge Category: Database

FIX:

A fairly common misconception is that should a PC crash or a client terminate improperly, the user process is terminated and there is no sign of the user in the Progress PROMON utility.

In actuality, the Watchdog process has benefits, but that is not part of its functionality. The process cleans up after improperly terminated processes by releasing locks, backing out any live transactions and releasing shared-memory locks, and cleaning up remote servers. It does not, however, disconnect users.

Only the PROSHUT command is supposed to disconnect the users from the database. But if the processes are still running it is not an issue for PROSHUT. The processes might be connected to several databases and the intent might not be to disconnect them from the other databases.

It is the operating system's (OS) job to remove users. The OS network protocol looks for dead remote connections. Specifically, this work is performed by the TCP_KEEPALIVE function.

By default, the keepalive value is typically set for 2 hours. This means that the OS does not send a kill signal to that process for 2 hours. At that time, if the process does not clean itself up gracefully, PROWDOG does the rest. Setting the keepalive parameter to 10 or 15 minutes is a reasonable time.

Use of the PROSHUT command or PROMON utility to disconnect users removes the user entry from the connected user list in proshut <db> -C list. Then, with PROMON using option 1 and looking up the user, the user might still appear.

If connections to the database persist after you run proshut -by or if this command "hangs", it could be a PROSHUT problem. Persistant connections could also be associated with (UNIX) signal handling that might need to be corrected (such as UNIX shell traps). In this event, there may be a requirement to kill the user process by hand as a temporary workaround.