Kbase P14574: Client terminates connection to database in an acceptable manner.
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  15/10/2008 |
|
Status: Unverified
GOAL:
Watchdog and _progres cleanup ; Debug for HANGUP Signals
SYMPTOM(s):
Client terminates connection to database in an acceptable manner.
Hangup Signal Received
Users shut off terminals sessions
Users close application window
modem connection is lost.
Watchdog brings down the broker process.
Debug hangup signals.
Shared memory Connections
the _progres session becomes a runaway process.
CAUSE:
The disconnected process sent a signal that the Progess database engine does not handle or the Database engine incorrectly handled the signal sent.
Progress will disconnect a processes that terminate abnormally when a kill -1 is sent to the process. Kill -9 and a kill -8 are not trapped by the Progress Database.
Progress shared memory connections are handled.
A terminal connects to the database.
+------------+
| terminal |
| |
+------------+
|
When the connection is severed by outside means the connection being dropped sends a kill -1 or a signal 1 to the broker process
|
kill (-1)
|
+------------+
| Broker |
| |
+------------+
The broker logs a Hangup Signal Received in the .lg file, followed by a Logout and the process at the OS level terminates.
FIX:
Determine the Signal that the client sent.
Cases processes are not terminating after shutting off a terminal or after a modem line is dropped can be resolved by running through this process.
1. Setup a test situation against the demo Database.
a. Start a client session to the database.
b. Drop the session in the same manner that the problem occurred. 2. Check the dbname.lg file to determine if the HANGUP signal is recorded.
a.If the HANGUP signal is there
and the dbname.lg is followed by the process logout, then things are working normally.
if the dbname.lg file does not log the process being logged out, this is a BUG. Stop debugging.
b. If the HANGUP signal is NOT there,determine where it is getting lost.(step 3)
3. Use the sigtst.c program in Solution ID 17080.
This program is used to determine the signals that are sent from the client terminal when the connection is servered. Reference the Solution for directions on how to run the program and interpret the results.
4. Is the signal being sent on disconnect a kill -1 or a hangup signal?
a. No. If the signal is not a kill -1, then this is the problem.
The terminal emulation vendor must be contact, and the terminal emulation package must send a kill -1 when the connection is dropped. Stop debugging.
b. Yes.If signal being sent is a kill -1, then it must be determined why signal is not reaching the broker.(step 5)
5. How is the client process started?
By a script?
Yes. Check script for signal trapping. If the command "trap" is set prior to executing the _progres remove the trap statement from the script. Retest the situation to see if the behavior is modified.
6. Is the _progres being started with exec? No. Use the exec command to execute _progress. Cases have been identified where the lack of exec prevented signals from pass through.
Example:
Syntax: exec _progres
7. Is the _progres executable probuilt? Yes. Check the C code to determine if it was compiled with signal handling. Signal handling in the C code may cause the problem.