Here are the most commonly used conditions within Informix, and their use. The list is not exhaustive.
Condition Name | Description | Potential Wait Threads | Broadcast/Signaler Thread |
adt_cond | Related to MLS Auditing | ||
arrived | A thread waiting for mail from the listen or sqlexec threads | poll | listen |
awaitMC%d | A producer thread is waiting to hand off data to a producer thread | exchange (producer), scan | exchange (consumer) |
backend:%d | Used for communication between exchange thread and sort thread | psortproc | exchange |
bar_cond | Barrier condition. A barrier is used to synchronize consumer and producer threads which straddle exchanges | exchange (consumer) | exchange (consumer) |
block | The system is blocked for one of five reasons: an archive, a long transaction cannot roll back, a chunk is down, a database is being dropped, and LBU_PRESERVE is set and a thread is switching logs | any thread | arcbackup, main_loop, Any thread that has marked a chunk down, onmonitor, onspace, any thread switching logs with LBU_PRESERV configured. |
bufcond | Used by parallel sort threads when they are ready to output sort data to buffers | ||
closed_down | Used by producers to indicate they have closed. | ||
closing | A network thread is waiting for a connection to close | ||
cp | checkpoint in progress | any thread trying to enter a critical section | main_loop |
drbt_rcvq | Used on the secondary when waiting for something to arrive at the Data Replication B-tree Receive Queue | ||
drbt_sndq | Used on the primary when waiting to use the Data Replication B-tree Send Queue | ||
drcb_bqe | Condition when the Data replication buffer queue is empty | ||
free_cond | Used when a producer thread is waiting for a free packet buffer | ||
gfile | Used when waiting to write to a global file descriptor | ||
incore | Parallel sort threads wait on this condition until they know the sort will be in-core | ||
loa_done | The secondary onload thread (on the ADM VP has completed some work) | onload | loa_tape_worker |
loa_request | The secondary onload thread is waiting for work. | loa_tape_worker | onload |
log | Logical logging has been blocked | Any thread attempting to access logical logs | onlog and DR threads. Also, a thread that attempted to change logs when logs were full will broadcast this condition when logs have been backed up. |
logbf%d | A particular log buffer is busy | Any thread trying to write to the buffer | The thread using the buffer |
nextexp | The expedited network queue is empty | ||
netfree | The free network queue is empty | ||
netnorm | The normal network queue is empty (this is the network/ streams equivalent of the sm_read condition | sqlexec | poll threads |
notify_MC%d | Used to notify a master consumer (exchange thread) that all its producers have shut down. | exchange | Producer (exchange) |
ok_to_close | Each producer thread waits for its Master Consumer to allow closing. | exchange (producer) | exchange threads |
ok_to_open | Each producer thread waits for its master consumer to allow opening. | exchange (producer) | exchange |
opened_up | After spawning all producer threads, a master consumer must wait for them to set up before it can open. | sqlexec, exchange | exchange (producer) |
opresv | Request to open an optical subsystem drive | sqlexec | opt vp # |
packet_cond | When an iterator needs more data packets before proceeding, the thread running the iterator waits on this condition | interator | iterator |
plogothr | The non-current physical log buffer is in use | Any thread waiting to modify the current plog buffer | Thread which is finished with the buffer |
pt %x | Condition is true during initialization of a shared memory partition structure | Any thread trying to use a shared memory partition structure, while it is being initialized by another thread | Any thread which has finished initializing a shared memory partition structure. |
sm_read | An sqlexec thread using shared memory communication waits on this condition for client messages | sqlexec | sm_poll |
sortproc:%d | The combination of this condition and backend:%d shown above allow for two-way communication between exchange and psort threads | exchange | psortproc |
unl_done | The secondary onunload thread has completed some work. | onunload | unl_tape_worker |
unl_request | the secondary onunload thread is waiting for work. | unl_tape_worker | onunload |
To discuss how Oninit ® can assist please call on +1-913-674-0360 or alternatively just send an email specifying your requirements.