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; 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; this_thread.current_dcb = dcb;
uint32_t rv = dcb_process_poll_events(dcb, events); uint32_t rv = dcb_process_poll_events(dcb, events);
this_thread.current_dcb = NULL; 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; 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 class FakeEventTask: public mxs::WorkerDisposableTask
{ {
FakeEventTask(const FakeEventTask&); FakeEventTask(const FakeEventTask&);
@ -3182,7 +3187,7 @@ public:
void execute(Worker& worker) void execute(Worker& worker)
{ {
m_dcb->dcb_fakequeue = m_buffer; m_dcb->dcb_fakequeue = m_buffer;
dcb_process_poll_events(m_dcb, m_ev); dcb_handler(m_dcb, m_ev);
} }
private: private: