# # Tests of the dedicated thread for refreshing the rules table. # SET sql_mode = 'PIPES_AS_CONCAT'; # Query rewrite plugin was installed. # # We will now test shutting down the server while refreshing rules. We # then restart the server and make sure it recovered. # # We will shut down the server while a session is waiting for a debug # sync signal. All debug sync points are released during shutdown, # so the plugin will proceed to try and read from a handler with a server # that has gone away. This will lead to a storage engine error. CALL mtr.add_suppression( "Got error from storage engine while refreshing " || "rewrite rules." ); INSERT INTO query_rewrite.rewrite_rules ( pattern, replacement ) VALUES ( 'SELECT "Rewrite"', 'SELECT "Rewritten"' ); SET GLOBAL debug= '+d,dbug.block_do_refresh'; # Two root connections are supposed to show here SELECT COUNT(user) FROM information_schema.processlist WHERE user LIKE 'root'; COUNT(user) 2 # We have to do this in order to avoid deadlock on the memory table's # mutex. SET @@global.rewriter_enabled = OFF; CALL query_rewrite.flush_rewrite_rules(); # We don't care if we time out here, as long as we manage to restart the # server. SET debug_sync = 'now WAIT_FOR parked'; # Two root connections are supposed to show here SELECT COUNT(user) FROM information_schema.processlist WHERE user LIKE 'root'; COUNT(user) 2 # # Restart the server # SELECT 'Rewrite'; Rewritten Rewritten Warnings: Note 1105 Query 'SELECT 'Rewrite'' rewritten to 'SELECT "Rewritten"' by a query rewrite plugin # One root connection is supposed to show here, as the rewrite thread is now gone SELECT COUNT(user) FROM information_schema.processlist WHERE user LIKE 'root'; COUNT(user) 1 SET @@global.rewriter_enabled = DEFAULT; Warnings: Warning 1620 Plugin is busy and will be uninstalled on shutdown # Query rewrite plugin was queued for uninstalling.