dcb_call_foreach now only calls the callbacks for those DCBs that are connected to the server.

This commit is contained in:
Markus Makela 2015-02-18 05:36:39 +02:00
parent ce063caf56
commit da029140cd
3 changed files with 6 additions and 5 deletions

View File

@ -2081,12 +2081,12 @@ dcb_get_next (DCB* dcb)
}
/**
* Call all the callbacks on all DCB's that match the reason given
* Call all the callbacks on all DCB's that match the server and the reason given
*
* @param reason The DCB_REASON that triggers the callback
*/
void
dcb_call_foreach(DCB_REASON reason)
dcb_call_foreach(struct server* server, DCB_REASON reason)
{
LOGIF(LD, (skygw_log_write(LOGFILE_DEBUG,
"%lu [dcb_call_foreach]",
@ -2106,7 +2106,8 @@ dcb_call_foreach(DCB_REASON reason)
while (dcb != NULL)
{
if (dcb->state == DCB_STATE_POLLING)
if (dcb->state == DCB_STATE_POLLING && dcb->server &&
strcmp(dcb->server->unique_name,server->unique_name) == 0)
{
dcb_call_callback(dcb, DCB_REASON_NOT_RESPONDING);
}

View File

@ -321,7 +321,7 @@ int dcb_remove_callback(DCB *, DCB_REASON, int (*)(struct dcb *, DCB_REASON, vo
int dcb_isvalid(DCB *); /* Check the DCB is in the linked list */
bool dcb_set_state(DCB* dcb, dcb_state_t new_state, dcb_state_t* old_state);
void dcb_call_foreach (DCB_REASON reason);
void dcb_call_foreach (struct server* server, DCB_REASON reason);
size_t dcb_get_session_id(DCB* dcb);
bool dcb_get_ses_log_info(DCB* dcb, size_t* sesid, int* enabled_logs);

View File

@ -690,7 +690,7 @@ int log_no_master = 1;
if (!(SERVER_IS_RUNNING(ptr->server)) ||
!(SERVER_IS_IN_CLUSTER(ptr->server)))
{
dcb_call_foreach(DCB_REASON_NOT_RESPONDING);
dcb_call_foreach(ptr->server,DCB_REASON_NOT_RESPONDING);
}
}