fis-gtm/sr_port/lke.hlp

242 lines
8.4 KiB
Plaintext
Raw Normal View History

1 Overview
The MUMPS LOCK Utility
The GT.M LOCK Utility, LKE, provides a tool for examining and changing
the GT.M LOCK environment. In MUMPS, the LOCK command reserves one or
more resource names. Only one process at a time can reserve a resource
name. No other process sharing the same environment can successfully
LOCK that resource name at the same time. MUMPS code commonly uses
LOCKs as flags controlling access to global data. Generally a LOCK
specifies the same as the name of the global variable that requires
protected access. However, this is only a convention. A LOCK argument
may contain any subscripted or unsubscripted MUMPS name including a
name with no preceding caret (^). Because they have the appearance of
local variable names, resource names with no preceding caret (^) are
commonly referred to as "local LOCKs."
The ZALLOCATE and ZDEALLOCATE commands provide an alternative,
non-standard, mechanism for managing LOCKs.
2 Functions
Functions
The two primary functions of the MUMPS LOCK Utility (LKE) are:
o SHOW all or specified LOCKs currently active on the system
o CLEAR all or specified LOCKs currently active on the system
When debugging a MUMPS application, you may use LKE to identify and
clear a possible deadlock situation, i.e., two or more processes
have LOCKs and are waiting to add resource names LOCKed by the
other(s).
When used with GT.CM, LKE may display and change information on
other nodes of a distributed database system.
2 LOCK_database
MUMPS LOCKs and Global Directories
GT.M distributes the LOCK database among the database files
identified by the Global Directory (GD). The Global Directory
Editor (GDE) creates and maintains Global Directories.
GT.M maps LOCKs of resource names starting with a caret (^) to the
database file used to map variables with the same name. If the
Global Directory maps the name A to file A.DAT, GT.M maps all LOCKs
on resource name ^A to file A.DAT.
GT.M maps LOCKs on names not starting with a caret (^) to the
region of the database specified with the GDE command LOCK -REGION.
By default, GDE creates Global Directories mapping local LOCKs to
the region DEFAULT.
These two factors result in the following:
o ^ LOCKs automatically intersect for all users of the same data
in any database file, because GT.M stores the ^ LOCKs in the
same file as the data
o "local" LOCKs intersect dependent on the Global Directory,
because users may access the database through different Global
Directories.
2 Global_Directories
Establishing a Global Directory
GDE and LKE use the environment variable gtmgbldir to identify
which file to use for the Global Directory. gtmgbldir should be
defined by individual users in their login files.
Example
$ gtmgbldir=prod.gld
$ export gtmgbldir
When a process invokes a GT.M image, GT.M identifies the current
Global Directory by the environment variable gtmgbldir. Within
MUMPS, SET $zgbldir=expr changes the Global Directory. $zgbldir is
an intrinsic special variable. An individual LOCK, ZALLOCATE or
ZDEALLOCATE argument may specify a Global Directory with the
extended global syntax.
1 CLEAR
C[LEAR]
The CLEAR command removes active LOCKs. The format of the CLEAR
command is:
C[LEAR] [-qualifier...]
The optional CLEAR command qualifiers are:
-A[LL]
-I[NTERACTIVE]
-O[UTPUT]=file-spec
-P[ID]=pid
-R[EGION]=region-name
By default, CLEAR operates interactively (-INTERACTIVE).
2 Qualifiers
-ALL
-A[LL]
Specifies the removal of all current LOCKs. If used with the
-REGION qualifier -ALL removes all LOCKs in the region. Issue a
CLEAR -ALL only when there are no active GT.M processes using
LOCKs or when you can predict the effect on the application.
The -ALL qualifier is incompatible with the -INTERACTIVE
qualifier.
-INTERACTIVE
-I[NTERACTIVE]
Clears one LOCK at a time interactively. LKE displays each
current LOCK with the PID of the owner process and prompts for
verification that the LOCK should be cleared. LKE retains the
LOCK for any response other than Y[ES].
The -INTERACTIVE qualifier is incompatible with the -ALL
qualifier.
By default, CLEAR operates interactively (-INTERACTIVE).
-OUTPUT
-OUTPUT=file-spec
Directs the reporting of all cleared LOCKs. If you specify an
existing file, LKE overwrites that file.
The -OUTPUT qualifier is compatible with all other qualifiers.
By default, CLEAR sends its messages to the standard output.
-PID
-/P[ID]=pid
Clears all LOCKs associated with the specified process
identification number. LKE interprets the PID as a decimal
number. This command provides a means for directing CLEAR to
LOCKs held by a process that is behaving abnormally.
The -PID qualifier is compatible with all other qualifiers.
-REGION
-/R[EGION]=region-name
Clears LOCKs mapped by the current Global Directory to a region
specified by the region-name.
The -REGION qualifier is compatible with all other qualifiers.
By default, CLEAR -REGION= operates interactively (-INTERACTIVE).
1 EXIT
E[XIT]
The EXIT command ends an LKE session. The format of the EXIT command
is:
E[XIT]
1 HELP
H[ELP]
The HELP command explains LKE commands. The format of the HELP command
is:
H[ELP] [options...]
Enter the LKE command for which you want information at the Topic
prompt(s). Use <RETURN> or <CTRL Z> to return to the LKE prompt.
Example
LKE> HELP SHOW
This command displays help for the SHOW command.
1 SHOW
SH[OW]
The SHOW command provides a status report on the LOCK mechanism and
the LOCK database. The format of the SHOW command is:
SH[OW] [ -qualifier...]
By default, SHOW displays -ALL.
The SHOW command reports active LOCKs. Information displayed about
specific LOCKs includes the LOCK resource name and the process
identification (PID) of the LOCK owner. The results of a SHOW may be
immediately "outdated" by MUMPS LOCK activity.
2 Qualifiers
-ALL
-A[LL]
Specifies a display of all current LOCKs in all regions and
information about the state of processes owning these LOCKs. The
-ALL qualifier is compatible with all other qualifiers. SHOW
-ALL -WAIT displays both -ALL and -WAIT information.
By default, SHOW displays -ALL.
-OUTPUT
-OUTPUT=file-spec
Directs the reporting of the current LOCKs. When you specify a
file, LKE overwrites that file.
The -OUTPUT qualifier is compatible with all other qualifiers.
By default, SHOW directs all messages to SYS$OUTPUT.
-PID
-P[ID]=process-identification
Displays all LOCKs owned by the specified PID.
The -PID qualifier is compatible with all other qualifiers.
By default, SHOW displays the LOCKs for all PIDs.
-REGION
-R[EGION]=region-name
Displays LOCKs for the specified region.
The -REGION qualifier is compatible with all other qualifiers.
By default, SHOW displays the LOCKs for all regions.
-WAIT
-W[AIT]
Displays the LOCK resource name and the process state
information of all processes waiting for the LOCK to be granted.
LKE does not display the owner of the LOCK. SHOW -ALL -WAIT
displays both -ALL and -WAIT information.
1 SPAWN
SP[AWN]
The SPAWN command creates a sub-process for access to the shell
without terminating the current LKE environment. Use the SPAWN command
to suspend a session and issue shell commands such as ls or printenv.
The SPAWN command accepts an optional command string for execution by
the spawned sub-process. If the SPAWN has command string parameter,
the created sub-process prompts and accepts any legal shell command.
To terminate the sub-process use the shell logout command.
The format of the SPAWN command is:
SP[AWN]