home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!ukma!wupost!emory!emory!not-for-mail
- From: jerry@jerry.mendota.ingr.com (Jerry Jugovich)
- Newsgroups: comp.databases.informix
- Subject: Re: tracking execution
- Date: 13 Nov 1992 11:28:04 -0500
- Organization: Mailing List Gateway
- Lines: 92
- Sender: walt@mathcs.emory.edu
- Distribution: world
- Message-ID: <1e0l2kINNsgg@emory.mathcs.emory.edu>
- Reply-To: jerry@jerry.mendota.ingr.com (Jerry Jugovich)
- NNTP-Posting-Host: emory.mathcs.emory.edu
- X-Informix-List-ID: <list.1602>
-
- > A company I have been working is having a problem with deadlocks. We
- > handled this by checking the status variable after executing any critical
- > transactions. If there is a deadlock status returned we call a routine
- > to handle this, which does a rollback. This works fine except we would
- > like to know what statement caused it and where in the code it is.
- >
- > So basically what we would like to know is if there any globals variables
- > or something to return the same information you get when there is an
- > actual error, ie. the module and line number.
- >
- > I know we could hardcode them into all the calls but there alot of them
- > and they would also have to be changed whenever we change code.
- >
- > We are currently running OnLine 4.0, I4GL 4.0 on Intergraph equipment.
- >
- > Our current call looks like the following :
- >
- > SOME CRITICAL DATABASE TRANSACTION
- > IF status < 0 THEN
- > CALL handle_warning(status)
- > END IF
- >
- > handle_warning then insert the status into a table and send E-mail to the
- > programming group that a deadlock happened and restarts the program for the
- > user.
- >
- > Any help on how to determine where the program is executing would be
- > appreciated.
- >
- > Bill Connors
- >
-
- I question the restart program functionality this is not all that easy to do
- possible but difficult. Easiest run in a OS shell loop.
-
- The error info can be acomplished much easier than you think. Really easy if
- you can live with not putting the info in a table.
-
- In your main add the following two lines.
-
- # open a errorlog file all 4gl errors written on occurence #
- # consisting of date time source-module name and the line number #
- # The error number and error message. Doc I4gl Ref Vol1 Sec 6 #
- # 4gl Function Library. #
-
- call startlog ( "your_errorlog_file" )
-
- # write a string to error log file #
- call errorlog ( "Program accesed" )
-
- # just as it says whenever error call this function #
- # NOTE it is documented that certain errors aborts program #
- # completly Tough Luck. Deadlocks are not one of them #
-
- whenever error call log_err
-
-
- And add your log_err function.
-
- Write a routine to read the error log file if you really need to insert the
- error info into a table. and do the email notification routine.
-
- function log_err()
-
- define
- u_pid_no
- e_str char(70),
- ss2 char(16)
-
- message "Error occured Check error_log file for details" attribute(red)
- sleep 5
- message ""
-
- # gets user pid and user name #
- call get_pid() returning u_pid_no ,ss2
-
- let e_str = "Error ocurred for User name ",
- ss2,
- " Process id = ",
- u_pid_no using "<<<<<<<<<<"
-
- # This writes to the error log file #
- call errorlog( e_str )
-
- end function
-
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- Mail Path: jerry@jerry.mendota.ingr.com Jerry Jugovich
- Phone: 612 681-4450 TIM Application Engineer
- Intergraph Corporation
- Mendota Heights Minnesota
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-