readwritesplit.c:handleError is meant to handle backend errors. Removed one call from mysql_client.c and only send error message to client instead.

Added checks to debug build to ensure that handleError is called before backend DCB is closed.
This commit is contained in:
VilhoRaatikka
2014-11-07 17:55:05 +02:00
parent 4f39828fa1
commit 44771dbc51
3 changed files with 31 additions and 26 deletions

View File

@ -394,7 +394,8 @@ static int gw_read_backend_event(DCB *dcb) {
session->state = SESSION_STATE_STOPPING;
spinlock_release(&session->ses_lock);
}
dcb_close(dcb);
ss_dassert(dcb->dcb_errhandle_called);
dcb_close(dcb);
}
rc = 1;
goto return_rc;
@ -468,6 +469,7 @@ static int gw_read_backend_event(DCB *dcb) {
session->state = SESSION_STATE_STOPPING;
spinlock_release(&session->ses_lock);
}
ss_dassert(dcb->dcb_errhandle_called);
dcb_close(dcb);
rc = 0;
goto return_rc;
@ -858,6 +860,7 @@ static int gw_error_backend_event(DCB *dcb)
session->state = SESSION_STATE_STOPPING;
spinlock_release(&session->ses_lock);
}
ss_dassert(dcb->dcb_errhandle_called);
dcb_close(dcb);
retblock:
@ -1047,6 +1050,7 @@ gw_backend_hangup(DCB *dcb)
session->state = SESSION_STATE_STOPPING;
spinlock_release(&session->ses_lock);
}
ss_dassert(dcb->dcb_errhandle_called);
dcb_close(dcb);
retblock:
@ -1189,6 +1193,7 @@ static int backend_write_delayqueue(DCB *dcb)
session->state = SESSION_STATE_STOPPING;
spinlock_release(&session->ses_lock);
}
ss_dassert(dcb->dcb_errhandle_called);
dcb_close(dcb);
}
}