Bug 951588 fix needs revert and re-fixing
Bug #1222709 reported by
Laurynas Biveinis
This bug affects 2 people
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Percona Server moved to https://jira.percona.com/projects/PS |
Invalid
|
High
|
Laurynas Biveinis | ||
5.1 |
Invalid
|
High
|
Laurynas Biveinis | ||
5.5 |
Invalid
|
High
|
Laurynas Biveinis | ||
5.6 |
Invalid
|
High
|
Laurynas Biveinis |
Bug Description
Bug 951588 was about the fact that calling handler ::info from another thread is inherently unsafe because it overwrites the handler state, causing troubles for the handler-owning thread. The fix was to clone handler first, and then run ::info on the cloned handler.
This fix is very fragile: see bug 1113388, bug 1193264, bug 1193308, bug 1206486, bug 1205200, bug 1204859, bug 1206020, and probably others. handler::clone() was not designed for such use.
A better is fix is needed. One option would be to implement new small info-like method for handler that returns the already-available information from the handler without doing a full clone nor info.
Related branches
lp:~laurynas-biveinis/percona-server/i-s-temp-tables-fixes-5.1
On hold
for merging
into
lp:percona-server/5.1
- Alexey Kopytov (community): Needs Fixing
- Laurynas Biveinis (community): Needs Fixing
-
Diff: 151 lines (+50/-23)2 files modifiedPercona-Server/sql/sql_show.cc (+46/-23)
Percona-Server/storage/innodb_plugin/handler/ha_innodb.cc (+4/-0)
lp:~laurynas-biveinis/percona-server/i-s-temp-tables-fixes-5.5
On hold
for merging
into
lp:percona-server/5.5
- Alexey Kopytov (community): Needs Fixing
- Laurynas Biveinis (community): Needs Fixing
-
Diff: 151 lines (+50/-23)2 files modifiedPercona-Server/sql/sql_show.cc (+46/-23)
Percona-Server/storage/innobase/handler/ha_innodb.cc (+4/-0)
lp:~laurynas-biveinis/percona-server/i-s-temp-tables-fixes-5.6
On hold
for merging
into
lp:percona-server/5.6
- Alexey Kopytov (community): Needs Fixing
- Laurynas Biveinis (community): Needs Fixing
-
Diff: 146 lines (+43/-23)2 files modifiedPercona-Server/sql/sql_show.cc (+40/-23)
Percona-Server/storage/innobase/handler/ha_innodb.cc (+3/-0)
tags: | added: i-s-temp-tables qablock |
To post a comment you must log in.
It appears that TABLES queries may simply do it. TEMPORARY_ TABLES the best we can do is to read the existing stats, whatever they happen to be, without calling any method first.
- Calling info() is safe on a non-cloned handler belonging to this connection. Thus I_S.TEMPORARY_
- Calling neither info() nor clone() is safe on handlers belonging to other connections. Thus for I_S.GLOBAL_