This topic applies only to the IBM Business Automation Workflow Advanced
configuration.

Managing locks on sequenced events

Draft comment:
This topic only applies to BAW, and is located in the BAW repository. Last updated on 2025-01-20 10:38
The lock manager handles event sequencing locks. You can use the esAdmin command to list, delete, or unlock any lock in the lock manager.
The lock manager supports two operations on event locks:
  • Lock: The lock operation attempts to acquire a lock and stores the lock request in a database. After a lock is granted, processing resumes for the invocation that requested the lock.
  • Unlock: The unlock operation releases the current lock and grants the lock to the next lock request.
Requests for the same lock are put into a queue in the order in which they are received. Locks are persisted to the default IBM® Business Automation Workflow database and data source to ensure they can be recovered in the case of a server failure.
The esAdmin command enables you to administer the active and queued locks currently in the lock manager. The following sections provide more detail on using esAdmin.
Note: In the network deployment environment, run the esAdmin command once for each deployment environment. You can run it on any application target server in the deployment environment, but do not run it on the deployment manager.

Listing locks

The esAdmin command can list all active and queued locks in the lock manager, or only those locks associated with a specific module, component, or method.

Use one of the following methods with esAdmin:
  • listAll: Lists all active and queued locks in the lock manager.
  • listLocks: Lists a subset of the active and queued locks in the lock manager. Specify one or more of the following parameters to return a filtered list of locks:
    • moduleName
    • componentName
    • methodName
    For example, the following command returns a list of active and queued locks for the CustComp component that is part of the CusMod module.
    esAdmin listLocks CustMod CustComp
The command returns output that looks like the following:
Table 1. Sample output from esAdmin listLocks command
Lock Id Sequence Id Owner Id Module Component Method System Message Id
7564504 2 695376 CustMod CustComp createCust A09- 427BE_5002
7564504 3 232757 CustMod CustComp createCust ADF- 053RT_5004
In the output in Table 1, the sequence ID is the order in which the lock requests are queued; the lowest number in the sequence currently holds the lock. The system message ID specifies the ID for the corresponding service integration bus message; you can use this information to correlate lock requests with the messages on the destinations.

Releasing locks

Use the esAdmin command to release a single lock, as follows:
esAdmin unlock lockId.

lockId is the unique lock ID returned by the esAdmin listLock or esAdmin listAll command.

This command is useful when you encounter a deadlock; you can release the lock that is deadlocked and grant it to the next lock request in the queue.

Deleting locks

If you need to delete one or more locks, first stop the module associated with the lock. Then, use the esAdmin command to delete the lock from the database.

For examples:
esAdmin deleteLocks moduleName

You must restart the module in order for the destinations to resume processing event messages.

Use the esAdmin deleteLocks command with caution. All locks in the specified module are deleted from the lock manager database.