Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
MXS-1833: Force all maxinfo traffic to the main thread
The same problem that caused maxadmin to lock up was also what caused
maxinfo to lock up. The concurrent access to the legacy administrative
functions caused deadlocks.
  • Loading branch information
markus456 committed Apr 26, 2018
1 parent f7705dc commit e5f26e2
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions server/core/dcb.cc
Expand Up @@ -3420,13 +3420,14 @@ int poll_add_dcb(DCB *dcb)
worker_id = MXS_WORKER_ALL;
}
else if (dcb->dcb_role == DCB_ROLE_CLIENT_HANDLER &&
strcasecmp(dcb->service->routerModule, "cli") == 0)
(strcasecmp(dcb->service->routerModule, "cli") == 0 ||
strcasecmp(dcb->service->routerModule, "maxinfo") == 0))
{
// If the DCB refers to an accepted maxadmin socket, we force it
// If the DCB refers to an accepted maxadmin/maxinfo socket, we force it
// to the main thread. That's done in order to prevent a deadlock
// that may happen if there are multiple concurrent maxadmin calls,
// that may happen if there are multiple concurrent administrative calls,
// handled by different worker threads.
// See: https://jira.mariadb.org/browse/MXS-1805
// See: https://jira.mariadb.org/browse/MXS-1805 and https://jira.mariadb.org/browse/MXS-1833
new_state = DCB_STATE_POLLING;
dcb->poll.thread.id = 0;
worker_id = dcb->poll.thread.id;
Expand Down

0 comments on commit e5f26e2

Please sign in to comment.