go to post Sergey Kudinov · Jun 24, 2016 Many thanks John for idea. It's more easier to use WaiterPID values. One correction to your code: s rs=##class(%ResultSet).%New("%SYS.LockQuery:Detail") s status=rs.Execute() k graph f i=1:1 q:'rs.%Next() d . s ref="L"_i,graph(ref,rs.Owner)=1 . f j=1:1:$l(rs.WaiterPID,",") d . . s pid=$p(rs.WaiterPID,",",j) s:pid]"" graph(pid,ref)=1 WaiterPID values are separated by "," not by " "
go to post Sergey Kudinov · Jun 23, 2016 Thank you Dmitry for response.I need to detect only all mutual dependence of locks and locks attempts of different processes.Dead lock sample:1 process: Lock +^Glb(1)2 process: Lock +^Glb(2)1 process: Lock +^Glb(2)2 process: Lock +^Glb(1)1 process waiting for unlocking of ^Glb(2). But it's impossible because 2 processes is waiting unlocking of 1 process node.^$LOCK contain information only about successful locks. Do detect 'dead' locks we need information about lock attempts too (%SYS.LockQuery:WebList query result that SMP displays).SMP 'View Lock' mode can display thousands of records. But I need to filter only mutual dependence of locks.