[MDEV-6156] Parallel replication incorrectly caches charset between worker threads Created: 2014-04-23 Updated: 2014-05-16 Resolved: 2014-04-25 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | None |
| Affects Version/s: | 10.0.10 |
| Fix Version/s: | 10.0.11 |
| Type: | Bug | Priority: | Major |
| Reporter: | Kristian Nielsen | Assignee: | Kristian Nielsen |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Issue Links: |
|
||||||||
| Description |
|
As reported by nanyi607rao on maria-developers@lists.launchpad.net: > If character_set in different Query_log_events changed, worker threads may Clearly, the rli cannot be used to cache charset between Queries when parallel Probably the solution is to move the cached_charset stuff from Relay_log_info |
| Comments |
| Comment by Kristian Nielsen [ 2014-04-23 ] |
|
Pushed to 10.0 Thanks to nanyi607rao for tracking down and reporting this bug! |
| Comment by Kristian Nielsen [ 2014-04-24 ] |
|
Unfortunately, my patch for this is completely wrong. Putting cached charset in the rpl_group_info is no better than Relay_log_info. Because there are multiple rpl_group_info objects used in one worker thread, and the value of cached_charset in one of them need have no relation to what is currently set in the THD. |
| Comment by Kristian Nielsen [ 2014-04-25 ] |
|
I've pushed a better patch to 10.0 for this. Now the cached_charset is stored in the THD that it is keeping cached information for, so that the wrong cache info will not be used for the wrong THD. |