Fixed lp:884101 "Crash in check_table_is_closed with concurrent workload"
storage/myisam/mi_dbug.c: Added mutex to protect open table list while traversing it
This commit is contained in:
parent
6c27730adb
commit
5fe4a51cff
@ -173,6 +173,7 @@ my_bool check_table_is_closed(const char *name, const char *where)
|
|||||||
DBUG_ENTER("check_table_is_closed");
|
DBUG_ENTER("check_table_is_closed");
|
||||||
|
|
||||||
(void) fn_format(filename,name,"",MI_NAME_IEXT,4+16+32);
|
(void) fn_format(filename,name,"",MI_NAME_IEXT,4+16+32);
|
||||||
|
pthread_mutex_lock(&THR_LOCK_myisam);
|
||||||
for (pos=myisam_open_list ; pos ; pos=pos->next)
|
for (pos=myisam_open_list ; pos ; pos=pos->next)
|
||||||
{
|
{
|
||||||
MI_INFO *info=(MI_INFO*) pos->data;
|
MI_INFO *info=(MI_INFO*) pos->data;
|
||||||
@ -183,10 +184,12 @@ my_bool check_table_is_closed(const char *name, const char *where)
|
|||||||
{
|
{
|
||||||
fprintf(stderr,"Warning: Table: %s is open on %s\n", name,where);
|
fprintf(stderr,"Warning: Table: %s is open on %s\n", name,where);
|
||||||
DBUG_PRINT("warning",("Table: %s is open on %s", name,where));
|
DBUG_PRINT("warning",("Table: %s is open on %s", name,where));
|
||||||
|
pthread_mutex_unlock(&THR_LOCK_myisam);
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
pthread_mutex_unlock(&THR_LOCK_myisam);
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
#endif /* EXTRA_DEBUG */
|
#endif /* EXTRA_DEBUG */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user