The central dispatcher assumes control of processing and distributes DBQueue tasks to individual slots.
First, it determines the number of currently available slots available for use. The more load there is on the database, the less slots there are to use. However, at least five slots are used.
The number of currently available slots results from:
The number of currently available slots = maximum number of available slots - sum of all own database processes - sum of processes of other databases on the server
The central dispatcher checks whether the slots are operational. The slot status can be queried in the QBMDBQueueSlot database view.
-
Slot status 3: Transferring tasks to the QBMDBQueueCurrent table.
-
Slot status 5: Processing tasks.
Once tasks are added to the DBQueue, the central dispatcher distributes them over the slots and processing task starts. If permitted, the tasks are distributed across multiple slots in parallel. This ensures that not all available slots are occupied by one and the same task type.
The central dispatcher determines the DBQueue entries (DialogDBQueue table) and moves the tasks to the QBMDBQueueCurrent table with the assignment task per slot.
Example of entries in the DialogDBQueue and QBMDBQueueCurrent tables
Task name | Object |
---|---|
OrgRoot |
A |
OrgRoot |
B |
ADSAccountInADSGroup |
X |
ADSAccountInADSGroup |
Y |
ADSAccountInADSGroup |
Z |
Slot number | Task name | Object |
---|---|---|
001 |
OrgRoot |
A |
001 |
OrgRoot |
B |
002 |
ADSAccountInADSGroup |
X |
002 |
ADSAccountInADSGroup |
Y |
002 |
ADSAccountInADSGroup |
Z |
The central dispatcher starts processing the tasks. Subsequent tasks resulting from processing are queued in the DialogDBQueue table.
If the tasks on a slot have been processed and no further tasks are pending, the slot number in the QBMDBQueueCurrent table is set to 0. The entry initially remains in the QBMDBQueueCurrent table but is no longer taken into account (because slot 0 is not active). All entries with the slot number 0 are deleted from the QBMDBQueueCurrent table at regular intervals.
If there are no more tasks in the DBQueue, the central dispatcher goes into a wait state.
Stop behavior by maximum timeout
Once the maximum runtime has expired, the tasks of slots in the QBMDBQueueCurrent table currently in use are still processed. No new tasks are added from the QBMDBQueue table.
Deferring DBQueue Processor tasks
Deferred DBQueue Processor tasks are re-enabled by the central dispatcher. Task deferrals are logged to the system journal.
Slot number | Meaning |
---|---|
-1 |
Synchronization is running for the object target system. |
-2 |
A database block could not be reset within the given time period. |
-3 |
There are still entries in the Job queue for the object to calculate. |
-4 |
There are still tasks in the DBQueue for the object to calculate, which are a necessary prerequisite. |
-5 |
The external condition is not yet fulfilled. |
-6 |
The object to calculate is marked as pending. |
-11 |
When the slot was filled, the object was still present from a previous processing run. |
-12 | The object was still found in the slot after processing. |
-23 | A deadlock occurred during processing. |
-24 |
An runtime error occurred during processing. |
-25 |
Delta calculation overloaded. |
-26 |
Internal error handling. |
-500 |
Internal error handling. |
Using the DBQueue buffer
To prevent blockages by lengthy actions when processing DBQueue tasks, such as synchronization, a DBQueue buffer (QBMDBQueuePond table) is used.
Synchronization initially writes DBQueue Processor tasks to the QBMDBQueuePond table. After synchronization is complete, the task are moved from the QBMDBQueuePond table to the DialogDBQueue table.
If a lengthy task does not queue anymore entries in the DBQueue tasks because synchronization did not end correctly for example, the remaining entries in the QBMDBQueuePond table are moved to the .DialogDBQueue table. The time period is set in the QBM | DBQueue | BufferTimeout configuration parameter. The default value is 120 minutes. The transfer is carried out by the daily maintenance tasks.