Skip to main content

Locks (Tools/APIs)

Read lock table information programmatically; remove locks; query and adjust lock table parameters.

Background Information

An important feature of any multi-process system is concurrency control, the ability to prevent different processes from changing a specific element of data at the same time, resulting in corruption. Thus ObjectScript and InterSystems SQL each provide commands for working with locks, which you use for concurrency control.

The %PersistentOpens in a new tab class provides a way to control concurrent access to objects, namely, the concurrency argument to %OpenId() and other methods of this class. These methods ultimately use the ObjectScript LOCK command. All persistent objects inherit these methods.

Internally, the in-memory lock table contains the current locks, along with information about the processes that hold those locks. You can use the Management Portal to view the lock table and (if necessary) remove locks; see Monitoring Locks.

For more information on locks, see Locking and Concurrency Control.

Available Tools

In addition, InterSystems provides the following tools:

This structured system variable returns information about locks.

Availability: All namespaces.

^LOCKTAB routine

Enables you to view and remove locks. See Managing the Lock Table.

Availability: %SYS namespace.

Enables you to read lock table information. This class provides details and examples.

Availability: All namespaces.

Enables you to remove locks. Also enables you to query and adjust lock table parameters. This class provides methods like the following:

  • DeleteOneLock()

  • GetLockSpaceInfo()

  • SetMaxLockTableSize()

  • And others

Availability: %SYS namespace.


Rather than removing a lock, the best practice is to identify and then terminate the process that created the lock. Removing a lock can have a severe impact on the system, depending on the purpose of the lock.

See Also

FeedbackOpens in a new tab