HADR_TIMER_TASK

(Republishing, or using this info in a commercial product/website, is prohibited without permission. All other uses are permitted. If in doubt, please ask.)

(Back to main page…)

Description:

This wait type is when a thread is waiting for access to the list of availability group timers, and also to track the timer waits themselves.

(Books Online description: “Waiting to get the lock on the timer task object and is also used for the actual waits between times that work is being performed. For example, for a task that runs every 10 seconds, after one execution, AlwaysOn Availability Groups waits about 10 seconds to reschedule the task, and the wait is included here.”)

Questions/comments on this wait type? Click here to send Paul an email, especially if you have any information to add to this topic.

Added in SQL Server version:

2012

Removed in SQL Server version:

N/A

Extended Events wait_type value:

The map_key value in sys.dm_xe_map_values is 863 in 2012 and 882 in 2014 RTM. After 2014 RTM, you must check the DMV to get the latest value as some map_key values have changed in later builds.

Other information:

I have not seen this wait type be a noticeable contention point.

This wait type is one that I usually filter out as a benign wait when doing wait statistics analysis.

Known occurrences in SQL Server (list number matches call stack list):

  1. Waiting for a timer to expire
  2. Waiting for the lock on the timer object to add a new timer
  3. Waiting for the lock on the timer object to add a new timer

And other similar call stacks.

Abbreviated call stacks (list number matches known occurrences list):

  1. SOS_Task::PostWait+90
    EventInternal<SuspendQueueSLock>::Wait+1f9
    HadrTimerTask::RunTimerRoutine+505
    HadrTimerTask::TimerRoutine+1e
    HadrWorkItem::Execute+151
    HadrWorkRoutine+1c5
    SOS_Task::Param::Execute+21e
    SOS_Scheduler::RunTask+a8
  2. SOS_Task::PostWait+90
    EventInternal<SuspendQueueSLock>::Wait+2c6
    SOS_RWLock::GetLongWait+10b
    HadrTimerTask::AddWorkItem+17e
    HadrWorkItem::SetTimeout+a3
    HadrWorkResource::EnqueueWork+19e
    DbMgrPartner::QueueBuildMsgAndSendTask+148
    DbMgrPartner::StartScans+403
    HadrWorkItem::Execute+151
    HadrWorkRoutine+1c5
    SOS_Task::Param::Execute+21e
    SOS_Scheduler::RunTask+a8
  3. SOS_Task::PostWait+90
    EventInternal<SuspendQueueSLock>::Wait+2c6
    SOS_RWLock::GetLongWait+10b
    HadrTimerTask::AddWorkItem+17e
    HadrWorkItem::SetTimeout+a3
    HadrWorkResource::EnqueueWork+19e
    CHadrTransportReplica::QueueVersionedTask+b9
    CHadrTransportReplica::DetectTimeout+19d
    CHadrTransportReplica::DetectTimeoutTask+ae
    HadrWorkItem::Execute+151
    HadrWorkRoutine+1c5
    SOS_Task::Param::Execute+21e
    SOS_Scheduler::RunTask+a8