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:
@ -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:
|
||||||
|
Reference in New Issue
Block a user