Configuring a pre-emptive high-priority queue

The pre-emptive high-priority queue feature allows a task in an executing high-priority Unit of Work (UOW) to pre-empt an executing task that holds the device lock on the same device.

Behavior

The pre-emptive task interrupts the executing task being pre-empted and requests that it discontinue its operations and release the device lock. Once released, the pre-emptive task acquires the device lock and executes its operations. A pre-emptive task cannot itself be pre-empted.

A task in a UOW will pre-empt another task if and only if all of the following are true:
  • The pre-emptive task's UOW priority is set to High.
  • Both the pre-emptive task and the task to be pre-empted are modifying the same device.
  • Both the pre-emptive task and the task to be pre-empted execute on the same Worker server.
  • The task to be pre-empted is in an Executing work state.
  • The task to be pre-empted is executing either an Import or a Synchronize Device to ITNCM operation.
  • The high-priority queue feature is configured.
  • The pre-emptive high-priority feature is configured, as described below.
Note: The task to be pre-empted's device driver must support pre-emption in order for this feature to function correctly. If the underlying driver does not support pre-emption, the pre-empted task, although interrupted, will not discontinue its operations and release the device lock in the manner described above, causing the interrupting pre-emptive task to fail.

Configuration

The pre-emptive high-priority queue feature is configured on a per Worker server basis via a number of properties in the following file: <NCM_Install_Directory>/config/properties/rseries.properties
Table 1. Pre-emptive high-priority queue properties

This table describes the pre-emptive high-priority queue properties, including their default values.

Property name Default value Details
WorkerAdminManager/preEmptiveHighPriorityQueueActive false This property enables (true) or disables (false) the pre-emptive high-priority queue feature on the Worker server.
WorkerAdminManager/preEmptiveHighPriorityQueueTimeout 600000 The maximum time in milliseconds (ms) that a pre-emptive task will wait to acquire a lock form a pre-empted task after it has been interrupted. If the pre-emptive task does not acquire it within this time, it will fail. The default value is ten minutes.
WorkerAdminManager/preEmptiveHighPriorityQueueDeviceSleep 60000 The time in milliseconds (ms) that a pre-emptive task will sleep following acquisition of the device lock from the pre-empted task in order to allow the device to reset. The default value is one minute.
WorkerAdminManager/preEmptiveHighPriorityQueueDeviceVendor1WorkerAdminManager/preEmptiveHighPriorityQueueDeviceType1 AlcatelPON This property pair defines a Vendor/Type class of devices whose drivers support pre-emption. Additional Vendor/Type device classes whose drivers support pre-emption can be inserted as a new property pair of the same name with an incremented index, as in the code example below this table:
Example
WorkerAdminManager/preEmptiveHighPriorityQueueDeviceVendor2=SomeVendor
WorkerAdminManager/preEmptiveHighPriorityQueueDeviceType2=SomeType
Note: After modifying rseries.properties, the Worker server needs to be restarted for the changes to take effect.