Re: Query interruption with MySQL 5.7 using KILL QUERY in signal handler does no more work
Sebastien FLAESCH <[email protected]>
| Newsgroups | gmane.comp.db.mysql.general |
|---|---|
| Organization | Four Js Development Tools |
| Message-ID | <[email protected]> |
I did the following test: My program still uses MySQL 5.7 libmysqlclient.so, but I connect now to a 5.6.16 server. And the SQL interrupt works fine... so I suspect there is a MySQL server issue in 5.7. Seb On 07/12/2016 01:01 PM, Sebastien FLAESCH wrote: > About: > > > B) For some reason, the program does not want to exit() - (must investigate) > > In fact we use prepared statements with a sequence of mysql_stmt_init, > mysql_stmt_prepare, mysql_stmt_execute, mysql_stmt_fetch, ... and > mysql_stmt_close. > > After the statement was interrupted, we try to free the MySQL statement hanlde with: > > mysql_stmt_close(<interrupted-stmt-handle>); > > But this API call hangs... (below the strace output) > > This was working fine in older versions... > > Seb > > strace log: > > ... > > sendto(3, "s\0\0\0\26select COUNT(*) from t2 a"..., 119, 0, NULL, 0) = 119 > recvfrom(3, "\f\0\0\1\0\1\0\0\0\1\0\0\0\0\0\0\36\0\0\2\3def\0\0\0\10COUN"..., 16384, 0, NULL, NULL) = 50 > sendto(3, "\n\0\0\0\27\1\0\0\0\1\1\0\0\0", 14, 0, NULL, 0) = 14 > recvfrom(3, 0x629000005220, 16384, 0, 0, 0) = ? ERESTARTSYS (To be restarted if SA_RESTART is set) > > ... > > When mysql_stmt_close() is called, hangs in recvfrom(): > > recvfrom(3, > > > > > > On 07/03/2016 06:55 PM, Sebastien FLAESCH wrote: >> Hi all, >> >> I use the following technique to cancel a long running query: >> >> In the SIGINT signal handler, I restart a connection and I perform a >> >> KILL QUERY mysql-process-id-of-running-query >> >> This was working find with MySQL 5.6. >> >> But with 5.7 (5.7.11), we get now a different result: >> >> A) The query is still interrupted, but we no longer get an SQL error -1317. >> >> B) For some reason, the program does not want to exit() - (must investigate) >> >> Any clues? >> >> >> With mysql it's working fine: >> >> mysql> select sleep(10); >> ^C^C -- query aborted >> +-----------+ >> | sleep(10) | >> +-----------+ >> +-----------+ >> 1 row in set (2.79 sec) >> >> mysql> \q >> Bye >> >> >> Thanks! >> Seb >> > > -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/mysql