Fix setting of this_thread.current_dcb

Also in the case of fake events, the current dcb must be set.
This commit is contained in:
Johan Wikman
2017-09-05 16:04:59 +03:00
parent d3f4723c81
commit 186ee31abf

View File

@ -3155,10 +3155,8 @@ static uint32_t dcb_process_poll_events(DCB *dcb, uint32_t events)
return rc;
}
static uint32_t dcb_poll_handler(MXS_POLL_DATA *data, int thread_id, uint32_t events)
static uint32_t dcb_handler(DCB* dcb, uint32_t events)
{
DCB *dcb = (DCB*)data;
this_thread.current_dcb = dcb;
uint32_t rv = dcb_process_poll_events(dcb, events);
this_thread.current_dcb = NULL;
@ -3166,6 +3164,13 @@ static uint32_t dcb_poll_handler(MXS_POLL_DATA *data, int thread_id, uint32_t ev
return rv;
}
static uint32_t dcb_poll_handler(MXS_POLL_DATA *data, int thread_id, uint32_t events)
{
DCB *dcb = (DCB*)data;
return dcb_handler(dcb, events);
}
class FakeEventTask: public mxs::WorkerDisposableTask
{
FakeEventTask(const FakeEventTask&);
@ -3182,7 +3187,7 @@ public:
void execute(Worker& worker)
{
m_dcb->dcb_fakequeue = m_buffer;
dcb_process_poll_events(m_dcb, m_ev);
dcb_handler(m_dcb, m_ev);
}
private: