Resolved Lock on the run ep 2

Hi guys,

I'm back with a new lock issue story.
Sometimes I have some locks that I can't explain. I'm able to find the user causing the lock . What I want to know is wich app(.w file)/procedure (.p file) is making the locked transaction . Do you know a way to found it ?

Best Regards,

- BobyIsProgress -
 

cj_brandt

Active Member
Generate a protrace file on the user holding the lock and you will see what code is being executed. Our lock monitor would generate a protrace file on a user holding a lock when there was another user Q'd waiting. In Linux the protrace file goes to the Current Working Directory and has the PID of the session at the end - protrace.XXXXX. Can be hard to find the protrace file unless you know the CWD - you can use lsof to find the CWD.
 

Rob Fitzpatrick

ProgressTalk.com Sponsor
Client Database Request Statement Caching can help with this investigation.

Presentation from PUG Challenge Americas 2014:
What's That User Doing?
Gus Björklund, Progress Software
Slides: http://pugchallenge.org/downloads2014/2392_whats_going_on_v14.pdf
Audio: http://pugchallenge.org/downloads2014/2392_Whats_That_User_Doing.mp3

Note: Once you've gone through the presentation, you will know that there are three detail levels for this feature. To be safe, don't use the "full stack" option. It has been known to lead to DB crashes.
 

Cringer

ProgressTalk.com Moderator
Staff member
And don't leave it on! Just switch it on to investigate a problem and then switch it off again.
Another caveat, it will only report on where the session last accessed the database, so if it's stuck in a logic loop somewhere you won't actually get an accurate pinpoint. That's where proGetStack that cj mentioned is slightly better in that it reports the exact point in time.
 

Rob Fitzpatrick

ProgressTalk.com Sponsor
Another caveat, it will only report on where the session last accessed the database, so if it's stuck in a logic loop somewhere you won't actually get an accurate pinpoint.
True, for arbitrary problems. But for problems involving record locks, as in this case, those will only happen with database access. ;)

Sampling that user's _connect record at regular intervals and logging it should provide a record of which program and where in it the issue lies. proGetStack is ideal if you know exactly when to use it, or if the client is blocked or in a loop. But if you're sampling while waiting for a condition to change, e.g. a particular record is locked or the number of locks held changes in some notable way then I prefer CDRSC.
 
Our Lock issue, as the bad habbit to block everyone in our workshop. So with this fact we are able to know when it appears and who is doing the lock.
After that we will launch a progetStack on the right PID . We hope that we will see some hint on why we get this.

I will keep you updated on the progress of this subject
 

TomBascom

Curmudgeon
With 11.7 there are new VSTs that show each connections -L usage and individual lock table high water mark. This is very helpful when tracking down "someone used a bunch a locks" problems.

ProTop, of course, has support for this which makes it really easy to see who the guilty party is. Or to proactively watch for troublemakers.
 

Rob Fitzpatrick

ProgressTalk.com Sponsor
With 11.7 there are new VSTs that show each connections -L usage and individual lock table high water mark. This is very helpful when tracking down "someone used a bunch a locks" problems.

ProTop, of course, has support for this which makes it really easy to see who the guilty party is. Or to proactively watch for troublemakers.
For future reference, Tom is referring to _UserLock._UserLock-HWM, the user's _Lock high water mark. This field is new in 11.7.0.

There were a lot of additions to the VSTs later in v11.x releases. Some details are here:
http://pugchallenge.org/downloads2017/New_VSTs.pdf

And of course, ProTop is here:
ProTop
Download it!
 
Hi,

I m really intersted in ProTop but I need to convince my IT Team about it ;).

And soon we will update our progress openedge from 10.2B to 11.7 :)
 
Top