(Republishing, or using this info in a commercial product/website, is prohibited without permission. All other uses are permitted. If in doubt, please ask.)
Description:
This wait type is when a thread is waiting for access to a critical section of code (one which only one thread can be executing) as part of reading or updating the list of availability group event subscribers.
(Books Online description: “The publisher for an availability replica event (such as a state change or configuration change) is waiting for exclusive read/write access to the list of event subscribers. Internal use only.”)
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:
Maps to the HADR_ARPROXY_NOTIFICATION_SUBSCRIBER_LIST map_value in sys.dm_xe_map_values (thanks to Jonathan’s post here).
The map_key value in sys.dm_xe_map_values is 837 in 2012 and 856 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.
Known occurrences in SQL Server (list number matches call stack list):
- Waiting for access to the event subscriber list (in this case, while doing routine sending of log blocks from the principal replica to secondary replicas)
- Waiting for access to the event subscriber list (in this case, while making some kind of change to the availability group, I think)
And other similar call stacks.
Abbreviated call stacks (list number matches known occurrences list):
- SOS_Task::PostWait+90
EventInternal<SuspendQueueSLock>::Wait+1f9
SOS_RecursiveMutex::Wait+78
CHadrPublisher::GetSubscriberInfoWithRef+5d
CHadrPublisher::GetTransportWithRef+26
CHadrArManager::GetTransportWithRef+9d
HadrReplicaManagerWrapper::GetTransportWithRef+b8
DbMgrPartner::SendNextMessage+55
DbMgrPartner::BuildAndSendLogMsg+7b
DbMgrPartner::StartScans+24b
HadrWorkItem::Execute+151
HadrWorkRoutine+1c5
SOS_Task::Param::Execute+21e
SOS_Scheduler::RunTask+a8 - SOS_Task::PostWait+90
EventInternal<SuspendQueueSLock>::Wait+1f9
SOS_RecursiveMutex::Wait+78
CHadrPublisher::GetSubscriberInfoWithRef+5d
CHadrPublisher::GetTransportWithRef+26
CHadrArManager::GetTransportWithRef+9d
HadrReplicaManagerWrapper::GetTransportWithRef+b8
CHadrRecvMsgData::Dispatch+961
CSbTransportRecvMsg::Dispatch+6e
CSbEndpointState::TriggerEvent+407
CSbEndpointState::DispatchMessageW+3ac
CConnectionEndpoint::DelimitOneRecvMessage+1e1
CConnectionEndpoint::ReceiveTask_IdempotentInvoke+6dd
CConnectionReceiveTask::IdempotentInvoke+15
CSbTaskManager::HandleReusableTask+264
CSbTask::TaskStart+14b
CSbTask::BeginTaskStart+17
SOS_Task::Param::Execute+21e
SOS_Scheduler::RunTask+a8