The central dispatcher finds entries in the DBQueue (DialogDBQueue table) and moves the tasks into the QBMDBQueueCurrent table with the assignment tasks 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 |
Each process processes tasks queued for its own slot in the QBMDBQueueCurrent table. Subsequent tasks resulting from processing are queued in the DialogDBQueue table.
If a process has processed its tasks and no other tasks are pending, the slot number in the QBMDBQueueCurrent table is set to 0 by the process itself. 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.
Slot number | Meaning |
---|---|
001 - n |
Number of slot to be processed by the task. |
0 |
State after the task is completed correctly. |
-1 |
An error occurred during task processing or processing was deferred, for example, because synchronization is running. The central dispatcher re-enables the task. NOTE: Deferring DBQueue tasks is recorded in the system journal. |
-2 |
An error occurred during task processing or processing was deferred, for example, because of blocking. The central dispatcher re-enables the task. |
-3 |
An error occurred during task processing or processing was deferred, for example, because there are still entries in the Job queue. The central dispatcher re-enables the task. |
Using the DBQueue buffer
To prevent blockages when processing DBQueue tasks by lengthy actions, for example, 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, for example, synchronization did not end correctly, the remaining entries in the QBMDBQueuePond table are moved to the .DialogDBQueue table. The time period for this is defined in the QBM | DBQueue | BufferTimeout configuration parameter (default: 120 minutes). The transfer is carried out by the daily maintenance tasks.